find and replace im String
-
Hallo,
ich versuche innerhalb eines strings '\n' durch "<br>" zu ersetzen muss man sich diese replace-funktoin selbst schreiben oder gibt es eine Möglichkeit STL-algorithmen zu nutzen?
-
Schau mal in die String Algo Boost-Library rein, da gibts was passendes:
http://www.boost.org/doc/html/string_algo/usage.html#id2742991
-
Mit den Algorithmen könnte das etwas schwer werden (weil die Sequenz bei der Ersetzung länger wird - und ein Algorithmus kann/darf nicht auf die interne Datenstruktur zugreifen). Aber Strings bieten die Methoden find() (sucht eine bestimmte Sequenz) und replace (ersetzt einen Zeichenblock), die du in einer Schleife aufrufen kannst:
while((p=str.find('\n'))!=string::npos) str.replace(p,p+1,"<br>");
-
Perfekt! Danke!
-
Beim replace-Aufruf sollte es wohl "1" statt "p+1" heissen...
void replace( std::string& str, char what, std::string const& with ) { string::size_type const offset = with.length()-1; string::size_type pos = -offset; while ((pos = str.find(what, pos+offset)) != string::npos) { str.replace(pos, 1, with); } }