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