Zeichen in String ersetzen
-
Moin moin,
Ich habe den string...
string test = "wort1 wort2 wort3";
... und möchte alle Leerzeichen durch ein "<sp>" ersetzen. Gibt es in c++ irgendeine Funktion, die das für mich erledigen kann oder muss ich mir selbst etwas schreiben ?
Falls nein, wie wäre in diesem Fall die beste Lösung ?
Danke
Lusches
-
std::string teststr = "abcde dsfl sdc dsf"; std::string findstr = " "; std::string replacestr = "<sp>"; size_t position = 0; while((position = teststr.find(findstr, position)) != std::string::npos) { teststr.replace(position, findstr.size(), replacestr); }
-
Moien!
Hast du viele Leerzeichen und viele Strings, dann spendierst du besser nen Puffer für die Umwandlung, damit der String nicht bei jeder Ersetzung komplett neu durchlaufen werden muss:
string sp = "<sp>"; string test = "wort1 wort2 wort3"; string buf; string::size_type i, N = test.size(); for ( i = 0; i < N; i++ ) if ( test[i] == ' ' ) buf += sp; // ein Durchlauf genügt else buf += test[i]; cout << (test = buf) << endl;
-
Danke euch Beiden. Das ganze funktioniert aller erste Sahne
Ich habe jetzt versucht das ganze im neuen Borland c++-builder laufen zu lassen und weiß nicht, wie ich die Borland-AnsiStrings in diese normalen Strings aus der <string.h> umwandeln kann.
autor2 = Autor->Text;
So funktioniert es jedenfalls nicht
autor2 wird durch [cpp]string autor2;[cpp] deklariert.
Autor ist das TEdit-Eingabefeld.
Vielen Dank
Lusches
-
AnsiString b; string a=b.c_str();
-
Danke. Das ganze hat jetzt mit c_str() und t_str() funktioniert.
Ich habe direkt schon das nächste Problem. Ich addiere zu einem String ein paar Zeichen und möchte dann noch einen anderen String anhängen.
String test1, test2;
test1+= "blub blub blub" + test2;
bringt bei mir folgenden Fehler:
[BCC32 Fehler] Unit1.cpp(69): E2096 Ungültige Strukturoperation
test1+= "blub blub blub"
alleine funktioniert, aber test2 wird nicht angehängt.
Danke
Lusches