kleines Problem bei string.find
-
Ich habe ein kleines Problem in meiner CSV parse methode, ich moechte das der Benutzer angeben kann durch welches Zeichen (bzw welchen String) die Werte getrennt werden zb: "," ";" ":" "<seperator>" usw
Es gibt ja mehrere Ueberladungen der methode find von der std string klasse, aber egal wie ich es angehe, die Methode liefert mir nicht den erwarteten Wert zurueck.
Momentan habe ich es als Plain-Text reingeschrieben aber das ist ja nicht der Sinn davon.
for (min_index = 0, max_index = 0; max_index != npos; min_index = max_index+1) { max_index = str.find(",", max_index+1); // so sollts sein: str.find(string_seperator.c_str(), max_index+1); value = str.substr(min_index, max_index-min_index); if (value.at(0) == '"') // hier auch value = value.substr(1, value.length()-2); #ifdef _DEBUG2 cout << value << " "; #endif _vvalues.push_back(value); }Koennt ihr mir helfen?
mfg leo
-
Es gibt auch eine Überladung von find() für const string&, die könnte dort auch funktionieren:
max_index=str.find(seperator,min_index);Was liefert diese Funktion denn zurück? (zu Not kannst du mal den Debugger fragen, wonach er überhaupt suchen will)
(zu at(): Dort benötigst du eine char-Konstante als Vergleichskriterium)
-
edit: habe den fehler gefunden
-
Was meinst du mit "um eins erhöht"? Hast du eingerechnet, daß der Index von 0 an gewertet wird?