Substring
-
Hallo Leute,
habe ein kleines Problem, ich würde gerne aus einen string "Hallo das ist ein Test" nur das dritte Wort haben. Wie kann ich das am einfachsten anstellen?
Gibt es da eine Möglichkeit ohne groß Schleifen oder so direkt auf das Wort zuzugreifen und auszulesen?
Gruß Akoww
-
std::string str("Hallo das ist ein Test"); std::string eins, zwei, drei; std::istringstream is(str); is >> eins >> zwei >> drei;
-
akoww schrieb:
Gibt es da eine Möglichkeit ohne groß Schleifen oder so direkt auf das Wort zuzugreifen und auszulesen?
Das Programm soll also eine göttliche Eingabe haben und aus dem Nichts heraus wissen, wo das dritte Wort liegt?
Das geht vielleicht mit undefiniertem Verhalten, wenn du Glück hast, geschieht dann ein Wunder
Ansonsten musst du wohl nach dem 2. und 3. Leerzeichen suchen und das geht nur mit Schleifen.
Edit:
@Th69,
Da werden aber auch Schleifen verwendetGrüssli
-
akoww schrieb:
Gibt es da eine Möglichkeit ohne groß Schleifen oder so direkt auf das Wort zuzugreifen und auszulesen?
Nein. Du musst schon irgendwie feststellen, wo das zweite Leerzeichen ist, damit du das dritte Wort finden kannst und das geht nur, indem du von vorne alle Zeichen durchgehst und prüfst. Aber die Schleifen kann man beliebig verstecken, indem man die Standardbibliothek für sich arbeiten lässt. Möglichkeiten gibt es da viele. Ein paar Anregungen:
http://www.cplusplus.com/reference/string/string/find/
http://www.cplusplus.com/reference/string/string/find_first_of/
http://www.cplusplus.com/reference/string/string/substr/
http://www.cplusplus.com/reference/iostream/stringstream/
http://www.cplusplus.com/reference/algorithm/find_if/Versuch mal, selber was zu basteln. Gerne auch ganz ohne Standardbibliothek (außer vielleicht substr), zu Übung. Als Programmierer solltest du keine Angst vor Schleifen haben. Sind dann hinterher vielleicht 5 Ausdrücke anstatt ein großer, aber daran solltest du dich nicht zu groß stören.
-
So nach kurzem hin und her habe ich mir die Funktion mal selber gebaut.
string subString ( string str, unsigned short pos ) { string ret; istringstream iss ( str ); for ( int c = 0; c < pos ; c++) iss >> ret; return ret; }
Wollte einfach mal wissen ob es eine vergleichbare Funktion schon gibt, damit ich jetzt nichts neues bauen muss ( auch wenn es jetzt nichts kompliziertes ist ).
Gruß Akoww