Hilfe bei String parsen...
-
Hallo ich habe folgenden string:
string str = "hallo %test";ich möchte gerne jetzt den string nach dem zeichen % suchen, und dann den wert test durch einen anderen string austauschen, wie macht man das?
-
benutze find(), replace() und size():
str2="%test" str.replace(str.find(str2),str2.size(),"du")string ist dann "hallo du"
bei unklarheiten auf www.cppreference.com nachschauen

frohe weihnachten noch
-
Mit
int pos = str.find('$');kann ich die Position von $ auslesen, der string fängt ab pos+1 an. Jetzt möchte ich den string hinter dem zeichen auslesen welcher variabel ist, im meinem Beipiel wär das test. Ich müsste ab der Position pos+1 das nächste Leerzeichen finden, gibt es hierfür eine funktion?
-
Du kennst die Funktion doch bereits: find
-
lolz schrieb:
Du kennst die Funktion doch bereits: find
lol?^^
-
Habs geschafft:
if(str.find("$") != string::npos) { int pos = str.find('$'); //Neuen string ab dem Zeichen $ erstellen string fix = str.substr(pos+1, str.length()); int leerzeichen = fix.find_first_of(' '); //Erstelle string ab dem $ bis zum nächsten leerzeichen string put = fix.substr(0, leerzeichen); //... str.replace(pos, put.length()+1, tmp); }... trotzem mag ich die Methode nicht da man immer teilstrings erstellen muss und am ende hat viele zerstückelte teile was sogar mein programm aufbläht.
Hoffe ihr habt Verbesserungsvorschläge
-
Hallo zusammen,
ebenfalls möglich ist die Ersetzung mit Hilfe eines Stringstreams und einem Streamiterator durchzuführen. Hierzu ein kleines Beispiel:
#include <iostream> #include <sstream> #include <iterator> using namespace std; int main() { stringstream s("Hallo %name Das ist ein Test!"); istream_iterator<string> ii(s); while (ii != istream_iterator<string>() && cout << (*ii=="%name" ? "Martin":*ii) << ' ') ++ii; }
-
Benutze doch einfach regex oder http://www.boost.org/doc/html/string_algo.html
-
Also, wenn ichs mir hier http://www.cppreference.com/cppstring/find.html ansehe müsste man doch ganz einfach bei find nen Startindex eingeben können... quasi
if(str.find("$") != string::npos) { int pos = str.find('$'); int leerzeichen = fix.find(' ',pos+1); //... str.replace(pos, leerzeichen-pos, tmp); }Oder aus welchem Grund geht das nicht?
Falls du den substr natürlich brauchst musst du ihn wohl kopieren, aber wenn du ihn einfach ersetzen sollst.
-
Wenn du sowas häufiger brauchst, dann hör auf Artchi.
-
... ist boost ein versuch die java api nachzucoden?
-
sag mal... schrieb:
... ist boost ein versuch die java api nachzucoden?
Wie kommst du denn auf so eine triviale Idee ?! Glaub ich nicht, dass das Kommitee sowas nötig hat.

mikey.
-
sag mal... schrieb:
... ist boost ein versuch die java api nachzucoden?
Nö.
-
sag mal... schrieb:
... ist boost ein versuch die java api nachzucoden?
Jo.