次のコードは、1 つの例外を除いて、想定されていることを正確に実行します。変更されたバッファーの内容がファイルに保存されていません。コードをステップ実行したところ、バッファが変更されているのがわかるので、何が起こっているのかわかりません。コメントをいただければ幸いです。
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;
}