Как заменить все символы в файле на другие
Имеется квест, нужно заменить все символы "!" и "?" на точки"."
А остальное оставить на месте
Сейчас проходим потоки fstream
Но никак не могу понять как правильно сделать.
Пробовал так
Объявлял поток fstream связывал с файлом и с помощью while и if пытался сделать задумку, идея такая была, если текущий символ, который лежит в потоке, fs, где fs- fstream fs(path, fstream::in | fstream::out)
То делал так
While (fs>>sym)
{
If (sym == '?' || sym =='!')
{
Sym='.';
Fs<<sym;
}
Else
Fs<<sym;
}
Мне подсказали, что когда я нахожу нужный мне символ под замену, то я должен с помощью seekg вернуться на символ назад и уже тогда менять мой sym
Но тут явно не только в этом дело и ещё есть ошибка. Буду рад помощи, спасибо
Ответы (2 шт):
char sym;
while (fs >> sym && sym != '?' && sym != '!');
теперь ваш символ содержит последный прочитаемый символ, так что, если не достигли конца файла, то устанавливаем позицию для записи и потом записываем:
fs.seekp(-1, fs.cur);
fs << '.';
Если желаете выполнить дальше, то теперь установите новую позицию для чтения. Например на начало:
fs.seekg(0, fs.beg);
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
string check(string a){
for(int i=0;i<a.size();i++){
if(a[i]=='?'||a[i]=='!')
a[i]='.';
}
return a;
return check(a);
}
int main(){
ifstream read("read.txt");
ofstream write("output.txt");
string arr[100];
string output[100];
for(int i=0;i<100;i++)
read >> arr[i];
for(int i=0;i<100;i++)
output[i]=check(arr[i]);
for(int i=0;i<100;i++)
write << output[i];
}