下面的代码完全符合它的预期,但有一个例外。修改后的缓冲区内容未保存到文件中。我已经单步执行了代码,我可以看到缓冲区正在更改,所以我不确定发生了什么。任何意见将不胜感激。
bool replacestring(char *ifile, wstring& searchString, wstring& replacementString)
{
wstring buffer;
wifstream finout(ifile, ios_base::in | ios_base::out | ios_base::binary);
if(!finout.is_open())
{
cout << "Can not open file " << endl;
return(1);
}
while(getline(finout,buffer))
{
auto pos = buffer.find( searchString ) ;
while( pos != std::string::npos )
{
buffer.replace( pos, searchString.size(), replacementString ) ;
pos = buffer.find( searchString, pos + replacementString.size() ) ;
}
if(finout.bad())
perror("BAD READ");
}
finout.close();
return 0;
}