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

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.

5

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.

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ł.

0

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

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