Suche |
Top Previous Next |
Skripte > Klassen-Elemente und C++-Befehle > interpretierte C++-Anweisungen > str > Suche
Eine Reihe von Methoden dient dem Auffinden bestimmter Positionen innerhalb eines Strings str.
unsigned int find(const str& xs) const unsigned int find(const str& xs, unsigned int pos) const unsigned int rfind(const str& xs) const unsigned int rfind(const str& xs, unsigned int pos) const unsigned int find_first_of(const str& xs) const unsigned int find_first_of(const str& xs, unsigned int pos) const unsigned int find_first_not_of(const str& xs) const unsigned int find_first_not_of(const str& xs, unsigned int pos) const unsigned int find_last_of(const str& xs) const unsigned int find_last_of(const str& xs, unsigned int pos) const unsigned int find_last_not_of(const str& xs) const unsigned int find_last_not_of(const str& xs, unsigned int pos) const
unsigned int find(const str& xs) const unsigned int find(const str& xs, unsigned int pos) const
Gibt den Index des ersten Vorkommens von xs im String zurück, fall xs vorkommt. Andernfalls wird eine spezielle Konstante str::pos zurückgegeben. (str::npos kann nur im Kontext von Gleichheitsopratoren verwendet werden.)
str s = "hello world"; unsigned int pos = s.find("o world"); if(pos != str::npos) out << s.substr(0, pos); // else Wert von pos nicht benutzen
Ausgabe: hell
Der find-Funktion kann als zweiter Parameter die Position übergeben werden, von der ab gesucht werden soll.
str s = "C:\\Programme\\TextTransformer\\Target\\test.txt"; unsigned int pos = s.find("\\"); unsigned int lastpos = str::npos; while(pos != str::npos) { lastpos = pos + 1; pos = s.find("\\", lastpos); } if(lastpos != str::npos) out << s.substr(0, lastpos); // ergibt : C:\Programme\TextTransformer\Target\
unsigned int rfind(const str& xs) const unsigned int rfind(const str& xs, unsigned int pos) const
Die beiden rfind-Methoden funktionieren analog zu den entsprechenden find-Methoden, jedoch wird der String rückwärts durchsucht. Das Ergebnis des letzten Beispieles wird mit der rfind-Methode schneller gefunden:
str s = "C:\\Programme\\TextTransformer\\Target\\test.txt"; unsigned int pos = s.rfind("\\"); if(pos != str::npos) out << s.substr(0, pos + 1); // ergibt : C:\Programme\TextTransformer\Target\
unsigned int find_first_of(const str& xs) const unsigned int find_first_of(const str& xs, unsigned int pos) const unsigned int find_first_not_of(const str& xs) const unsigned int find_first_not_of(const str& xs, unsigned int pos) const unsigned int find_last_of(const str& xs) const unsigned int find_last_of(const str& xs, unsigned int pos) const unsigned int find_last_not_of(const str& xs) const unsigned int find_last_not_of(const str& xs, unsigned int pos) const
Mittels dieser Funktionen wird nicht nach einem Teil-String gesucht, sondern nach dem Vorkommen eines der Zeichen aus dem String-Argument xs. Mit dem optionalen zweiten Argument pos kann eine Position besimmt werden, ab der der String durchsucht werden soll.
find_first_of sucht vorwärts nach dem ersten Zeichen aus xs
find_first_not_of sucht vorwärts nach dem ersten Zeichen das nicht in xs enthalten ist
find_last_of sucht rückwärts nach dem ersten Zeichen aus xs
find_last_not_of sucht rüchwärts nach dem ersten Zeichen das nicht in xs enthalten ist
Beispiel:
Wenn der folgende Code mit xs = "Hello\r\nGood bye" ausgeführt wird, erhält man das Ergebnis: "\"Hello\\r\\nGood bye\"". Wenn dieses Ergebnis in die Ausgabe geschrieben wird, erscheint: "Hello\r\nGood bye".
str sResult = "\""; str sFindWhat = "\\\r\n"; unsigned int oldpos = 0; unsigned int pos = xs.find_first_of(sFindWhat); while(pos != str::npos) { sResult += xs.substr(oldpos, pos - oldpos); switch(xs[pos]) { case '\\': sResult += "\\"; break; case '\r': sResult += "\\r"; break; case '\n': sResult += "\\n"; break; } oldpos = pos + 1; pos = xs.find_first_of(sFindWhat, oldpos); }
sResult += xs.substr(oldpos); sResult += "\""; return sResult;
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |