Splitfunktion Problm mit array
-
hallo ich habe hier eine splitfunktion
nur leider kommen fehler und
wir können kein array zurück bekommen kA warum hier ist der code:string* split(string text, string delimiter) { string splitted[countChars(text,delimiter)]; int j = 0; for (int i = 0 ; i < text.length() ; i++) { if (text.substr(i,i+1) == delimiter) { j++; } else { splitted[j] += text.substr(i,i+1); } } return splitted; } int countChars(string text, string cchar) { int counter = 0; for (int i = 0 ; i < text.length() ; i++) { if (text.substr(i,i+1) == cchar) { counter++; } } return counter; }Hoffe auf schnelle antwort
MFG koeig2
-
wir können kein array zurück bekommen kA warum hier ist der code
Was sicher nicht geht ist, in einer Funktion ein eine lokale variable auf dem Stack zu erstellen (wie splitted) und dann die zurückgeben. Weil die Variable auf dem Stack wieder zerstört wird, wenn der Scope verlassen wird.
-> Speicherplatz ausserhalb der Funktion bereitstellen und dann in der Funktion füllen.
Edit: Den Rest habe ich mir nicht angeguckt.
simon
-
hi koeig2,
Was die Funktion selbst macht, habe ich mir noch gar nicht angesehen, aber wenn Du einen Vektor von Strings zurückgeben willst, solltest Du das auch tun:
vector<string> split(string text, string delimiter) { vector<string> splitted(countChars(text,delimiter)); // sicher, dass countChars nicht 0 oder kleiner zurückgibt ?.. oder für "Kopiersparer":
void split(string text, string delimiter, vector<string>& erg) ...Gruß,
Simon2.