String zu mehreren Substrings
-
Hey Leute...
Sitze hier gerade vor nem echt dummen Problem und habe nen Fehler in meiner Denkensweise...
Also, ich habe einen string ueber getline eingelesen. Dieser String beinhaltet in manchen Faellen Leerzeichen zwischen den einzelnen Woertern. Jetzt wollte ich gerne jedes Wort nach einem Leerzeichen in einen Substring packen, sodass ich jedes Wort (getrennt durch Leerzeichen) als Parameter verwendet werden kann.
Da habe ich mir einfach gedacht...
Ermittel einfach alle Positionen der Leerzeichen mittels find();, speichere die in nem array und erstellst anschliessend mittels substr(); die einzelnen Substrings, welche spaeter einmal als Parameter dienen sollen.Das war vor einiger Zeit und naja... mir fehlen die Worte.
string t_data; new_sock >> t_data; int pos_substr[t_data.length()-1]; pos_substr[0] = 0; pos_substr[0] = t_data.find( " " ); for(int i = 1; i < t_data.length()-1; i++ ){ pos_substr[i] = t_data.find( " ", pos_substr[i-1] ); cout << pos_substr[i]; }Rgds
coda
-
Hi,
warum liest Du nicht gleich in einen vector<string> ein ? Der "normale" operator>>() kann das Trennen al Leerzeichen eigentlic schon.
(ungetestetes implementationsbeispiel)vector<string> t_data(istream_iterator<string>(new_sock), istream_iterator<string>());Wenn das aufgrund der Natur von new_sock nicht funktioniert, kann das eigentlich istringstream auch ganz gut:
(ungetestetes implementationsbeispiel)string gesamtData; new_sock >> gesamtData; istringstream istr(gesamtData); vector<string> t_data(istream_iterator<string>(istr), istream_iterator<string>());das Ganze Gefummel mit den Indizes und den damit verbundenen "off-by-one"-Problemen würde ich mir sparen...
Gruß,
Simon2.