Witam.
Mam problem z programem do zamiany wyrazów w tekście. Przyjmuje on 4 argumenty 1.Plik wejsciowy 2. Plik wyjsciowy 3. Wyraz zamieniany 4. Wyraz, na który chcemy zmienić.
Ogólnie działa jak powinien, tylko jest kłopot gdy chce się zamienić np. kot na kotek, to wtedy pętla robi się w nieskończoność, staje przy pierwszym wyrazie znalezionym w pliku. Próbowałem coś z tym zrobić, lecz nic nie wychodzi.
Kod:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char* argv[]) {
string s;
int i=1;
string szukaj=argv[3];
string zmiana=argv[4];
ifstream wej;
wej.open(argv[1],ifstream::in);
if(!wej.is_open()) cout << "Blad otwarcia pliku";
ofstream wyj;
wyj.open(argv[2],ofstream::out);
if(!wyj.is_open()) cout << "Blad otwarcia pliku";
size_t len = szukaj.length();
while(getline(wej, s)) {
while(true) {
size_t pos = s.find(szukaj);
if(pos != string:: npos) {
s.replace(pos, len, zmiana);
cout << i <<", " << pos+1 << endl;
}
else
break;
}
i++;
wyj << s << endl;
}
wej.close();
wyj.close();
return 0;
}