Bestimmte Wörter in einer Datei (mit nur einer Zeile) ersetzen
-
Hallo.
Ich habe einen Text "Romeo and Juliet" und soll dort ale Vorkommen des Wortes "JULIET" durch meinen Namen ersetzen ("ANNE"). Habe auch schon einen "Lösungsansatz" programmiert. Das Problem ist nun aber zsätzlich, das diese Datei nur aus einer Zeile besteht und er nach dem ersten auffinden von JULIET dann aufhört weiter zu suchen. Wie kann ich ihm sagen, dass er weiter suchen soll, bis alle "JULIET" Wörter ersetzt sind?
Hier mein Code:
#include <fstream> #include <iostream> #include <string> using namespace std; int main() { ifstream iStream("RomeoJuliet.txt"); ofstream tempStream("test.txt"); string s; while (getline(iStream, s)) { while(s.find("JULIET", 0) < s.length()) s.replace(s.find("JULIET", 0), s.length() - s.find("JULIET", 0), "ANNE"); tempStream << s << endl; } iStream.close(); tempStream.close(); }Danke im Voraus für eure Hilfe.
Lg Anne
-
Dein 2. Parameter bei string.replace scheint falsch zu sein, dort muß die Anzahl der zu ersetzenden Zeichen hin, d.h. Länge von "JULIET", also 6:
s.replace(s.find("JULIET", 0), 6, "ANNE");
-
size_t ind = 0; while( (ind = line.find( "JULIET", ind )) != string::npos ) { line.replace( ind, 6, "ANNE" ); ind += 4; }
-
Vielen Dank

Funktioniert nun.
Lg Anne
-
Sehr geil. Merci