替换文件中“c++”字符串后的字符:
#include <iostream>
#include <fstream>
#include <string>
方法1:读一行再分析 ( 到最后一行好像替换不了,有时间再看看)
int main()
{
using namespace std;
fstream fs("a.txt",ios::in|ios::out);
if (!fs)
{
cout << "open file error!";
exit(EXIT_FAILURE);
}
string strLine;
int chars =0;
char c;
while (getline(fs,strLine))
{
cout << strLine <<endl;
int index = strLine.find("c++",0);
if (index == -1)
{
continue;
}
else
{
fs.seekg(chars + index + 4,ios::beg);
fs.get(c);
fs.seekp(chars + index + 4,ios::beg);
fs.put('5');
}
chars += strLine.size() + 2; //有换行符
fs.seekg(chars,ios::beg);
}
fs.close();
return 0;
}
方法2:一个字符一个字符的读取
int main()
{
using namespace std;
fstream fs("a.txt",ios::in|ios::out);
if (!fs)
{
cout << "open file error!";
exit(EXIT_FAILURE);
}
char c1,c2,c3,c4;
int i =0;
fs.seekg(i,ios::beg);
while (fs.get(c1))
{
cout <<"c1=" << c1 <<endl;
if (c1 == 'c')
{
cout << i << endl;
i++;
cout << i << endl;
fs.seekg(i,ios::beg);
fs.get(c2);
cout <<"c2=" << c2 <<endl;
if (c2 == '+')
{
i++;
fs.seekg(i,ios::beg);
fs.get(c3);
cout <<"c3=" << c3 <<endl;
if (c3 == '+')
{
i = i+2; //假设"c++"后是一个空格然后再是'4'
fs.seekg(i,ios::beg);
fs.get(c4);
fs.seekp(i,ios::beg);
fs.put('5');
i++;
}
else
{
i++;
continue;
}
}
else
{
i++;
continue;
}
}
else
{
i++;
fs.seekg(i,ios::beg);
continue;
}
}
fs.close();
return 0;
}