Zeichenkette ersetzen
-
Hi Leute,
ich wollte euch mal fragen wie ihr das hier lösen würdet:
Gegeben sind zwei Defines, z.B.
#define TEST asdf
#define BLA fdsaDiese beiden defines sollen in ein Array gespeichert werden.
Bis dahin sollte es ja eigentlich kein Problem geben.
Jetzt soll mein Programm eine Datei öffnen und überall, wo in dieser Datei TEST steht, soll er asdf dafür einsetzen und überall wo BLA steht soll nun fdsa hin.
Wie würdet ihr das machen? Hat jemand schonmal so was geschrieben und kann mir evtl. den Code zukommen lassen?
Bis bald
mycrypt
-
/* einlesen der datei in einen std::vector<std::wstring> ... replace all "TEXT" by "asdf" */ Replace(strings, L"TEXT", L"asdf"); void Replace(std::vector<std::wstring> &strings, std::wstring search, std::wstring replace) { std::size_t pos = 0; for(unsigned int i=0; i<strings.size(); ++i) { while((pos = strings[i].find(search)) <= search.length()) strings[i].replace(pos, search.length(), replace.c_str(), replace.length()); } }
-
Das funktioniert nur teilweise.
Angenommen meine Datei hat folgenden inhalt:
der die das
der der das
die das derMein programm soll "der" mit "test" ersetzen, also mit deiner Hilfe:
Replace(vec, L"der", L"test");
Ausgabe ist dann allerdings nur:
test die das
test der das
die das derSprich, das Programm ersetzt das Wort nur, wenn es am Anfang nur nur einmal pro Zeile vorhanden ist.
Hat noch jemand ne Idee?
MfG
-
Mach mal statt "<= search.length()" lieber "!= std::wstring::npos"
-
hier gibts eine korrekte replace_all funktion: http://www.c-plusplus.net/forum/viewtopic-var-t-is-155739.html
-
LordJaxom schrieb:
Mach mal statt "<= search.length()" lieber "!= std::wstring::npos"
danke damit läufts perfekt