string finden und ersetzen geht nicht, bitte um hilfe echt dringend
Hallo..kann mir bitte jemand helfen und sagen was an dieser funktion nicht stimmt...er macht jedenfalls keine ausgabe vom ersetzen und das "programm" beleibt hängen
hier der ganze code
Hallo..kann mir bitte jemand helfen und sagen was an dieser funktion nicht stimmt...er macht jedenfalls keine ausgabe vom ersetzen und das "programm" beleibt hängen
Code:
string ersetze (string s, string u, string z)
{
string::size_type i;
while ((i=s.find(u)) != string::npos) // solange wort in s vorkommt
s.replace (i, u.size(), z); // durch Ersatzwort ersetzen
return s;
}
hier der ganze code
Code:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
string Orginal[6]={"die","der","ist","ich","Du","Dir"};
string Ersatz[6]={"ersatzdie","ersatzder","ersatzist","ersatzich","ersatzDu","ersatzDir"};
string ersetze (string s, string u, string z);
int main()
{
string Zeile,nichtenthalten,enthalten,ersatz;
int i=0,e=0,o=0;
ifstream datei("Eingabe.txt"); // Eingabestrom fin definieren und ver-
// binden mit Datei, deren Name in der Stringvariablen Datei steht
if (!datei) // Das hat nicht funktioniert
{ cout << "Datei existiert nicht!" <<endl;
exit(1);
}
//cin.ignore (80, '\n'); // evtl. Überbleibsel in cin entfernen
//cout << "Bitte die verbotene Zeichenkette eingeben.\n";
//string Unwort;
//getline (cin, Unwort);
while ( getline(datei, Zeile) ) // nächste Zeile lesen
{
for (i=0;i<6;i++)
{
if (Zeile.find(Orginal[i])==string::npos) // Wort nicht enthalten
o=1;
}
for (i=0;i<6;i++)
{
if (Zeile.find(Orginal[i])!=string::npos) // zensierte Zeile ausgeben:
enthalten=Orginal[i];
ersatz=Ersatz[i];
cout<<"";
e=1;
}
if (o=1)
{
cout << Zeile << endl;// Zeile ausgeben
o=0;
}
if (e=1)
{
cout << ersetze (Zeile, enthalten, ersatz) << endl;
e=0;
}
}
datei.close();
return 0;
}
string ersetze (string s, string u, string z)
{
string::size_type i;
while ((i=s.find(u)) != string::npos) // solange wort in s vorkommt
s.replace (i, u.size(), z); // durch Ersatzwort ersetzen
return s;
}
Zuletzt bearbeitet: