wie kann ich aus einer reihe von wörtern ein bestimmtes wort "herraupicken"? also wenn ich z.B. folgende reihe habe: "hallo ich bins" wie kann ich das Zweite wort(also das "ich" ) in einer variable speichern?
ich hab zwar leider die frage etwas kompliziert ausgetrückt aber vielleicht versteht ja trotzdem jemand, wass ich meine. ich bin über jede antwort froh
Hallo also du kannst dir mit Find() die Position des ersten Leerzeichens im String holen und dann eben mit ner Schleife so lange das darauffolgende Zeichen an einen zweiten String anhängen bis wieder ein Leerzeichen kommt so zB:
C++:
CString str1 = "hallo ich bins", str2 = ""; int Find1 = str1.Find(" ", 0); //ab dem ersten Zeichen (0) mit Suche nach Leerzeichen (" ") beginnen int Find2 = str1.Find(" ", Find1+1); //ein Zeichen nach dem ersten Leerzeichen weitersuchen
for(int i=Find1+1; i != Find2; ++i) str2 += str1[i];
dann sollte am Ende eigentlich in str2 dieses ICH stehen Dieser Post wurde am 04.03.2006 um 02:40 Uhr von CppProgrammer editiert.
erstmal danke für die antwort. aber es kommt immer der fehler, dass "CString" undefiniert ist! was muss ich für header-dateien includen damit CString funktioniert?
mhh. leider kann ich damit nicht viel anfangen. ich benutze borland c++ builder und hab die hilfe durchforstet aber nichts gefunden. ich hab auch gegoogelt, aber bin auch nicht schlauer geworden. tut mir leid, dass ich mich so noobig anstelle aber kann mir trotzdem bitte jemand auf die sprüge helfen. tHX
Und was passiert, wenn jemand versehentlich zwei Leerzeichen benutzt, oder nen tab? Ich würde es der Streamlogik überlassen:
C++:
std::string get_nth_word(const std::string& sentence, int n) { std::stringstream s(sentence); std::string word; do { s>>word; } while (--n); if (!s) word = ""; return word; }
.... // Aus beispiel oben: str2 = get_nth_word("hallo ich bins", 2);
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)