【发布时间】:2013-05-05 12:49:41
【问题描述】:
以下代码完全符合预期,但有一个例外。修改后的缓冲区内容未保存到文件中。我已经单步执行了代码,我可以看到缓冲区正在更改,所以我不确定发生了什么。任何 cmets 将不胜感激。
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;
}
【问题讨论】: