Sklejenie tekstu, tak aby powstała komenda do funkcji system()

2015-01-06 14:38
0

Więc jak w temacie próbuję skleić tekst, by powstała pewna komenda do funkcji system()
robię to na stringach, używając funkcji strcat().
Pierwsze pytanie. Jest bliźniaczo podobna funkcja strncat(), czym one się od siebie różnią ?

Fragment kodu z mojego programu

string Uaktualnianie_Sciezki(string nazwa_katalogu, string sciezka_do_pliki_txt){
    //tu gdzies bedzie potrzebna jakies tellg ktore zapamieta miejsce po && i od zapamietanego miejsca bedzie dalej dopisywac, trzeba tu będzie nad tym pomyslec
    string zwrotna_sciezka = "cd ";
    strcat(zwrotna_sciezka, nazwa_katalogu);      //tu niby nie zadeklarowane, bo zamiast stringów powinny chyba być C napisy
    strcat(zwrotna_sciezka, " && ");
    strcat(zwrotna_sciezka, sciezka_do_pliki_txt); 

    return zwrotna_sciezka;
} 

kompilator zwraca mi takie komunikaty:
C:\Programowanie\Projekt2\Projekt2.cpp In function 'std::string Uaktualnianie_Sciezki(std::string, std::string)':
33 40 [Error] 'strcat' was not declared in this scope

wydawało mi się, że mogę nie zadeklarować sobie jakiejś zmiennej, albo funkcji którą sam sobie wcześniej napiszę. A ta pochodzi od biblioteki <string> jak się nie mylę. Dlatego też nie wiem co w tej sytuacji znaczy ten komunikat o błędzie.

Tytuł wątku powinien w sposób sensowny i w miarę wyczerpujący opisywać Twój problem; Pamiętaj, że wątki z nic nie mówiącymi tytułami z reguły lądują w koszu; - furious programming 2015-01-06 18:18

Pozostało 580 znaków

2015-01-06 14:42

Skoro używasz stringów, to po co Ci strcat()?

string s = "asdf" ;

s += "rotfl" ;
s += "lol" ;

system(s.c_str() ) ;

Za pomocą funkcji c_str() konwertujesz sobie stringa do const char* i w ten sposób możesz go wykorzystać przy wywołaniu system().

A jeśli chodzi o strncat(), to ta wersja dokleja do ciągu jedynie taką ilość pierwszych znaków, jaka została podana w argumencie.

edytowany 1x, ostatnio: Lucas Darkstorm, 2015-01-06 14:48

Pozostało 580 znaków

2015-01-06 14:57
2
markosz1 napisał(a):

wydawało mi się, że mogę nie zadeklarować sobie jakiejś zmiennej, albo funkcji którą sam sobie wcześniej napiszę. A ta pochodzi od biblioteki <string> jak się nie mylę. Dlatego też nie wiem co w tej sytuacji znaczy ten komunikat o błędzie.

str(n)cat jest w <cstring>

Natomiast nie ma co mieszać C-string i std::string, lepiej zrobić jak @Lord Darkstorm pokazał.

Pozostało 580 znaków

2015-01-06 14:59
0

Wielkie Dzięki Lord Darkstorm. To co napisałeś w swoim poście niesamowicie ułatwi mi pisanie całego programu ! :)

edytowany 1x, ostatnio: markosz1, 2015-01-06 16:06
Problem rozwiązał @Lord Darkstorm, a zaznaczyłeś jako rozwiązanie post @twonek... Zaznacz więc ten odpowiedni post; - furious programming 2015-01-06 18:19

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0