C++,同时读写二进制文件

Aux*_*ary 2 c++ fstream

我想知道是否可以使用"fstream"从二进制文件中读取一个字节,然后更改该字节并将其写回.我尝试了这段代码,但它没有用,没有任何反应,但我确信它读得正确.

file.open(path, ios::in|ios::out|ios::binary|ios::ate);
file.seekg(0, ios::end);
int size=file.tellg();
file.seekg(0,ios::beg);
char buffer;    
for(int i=0;i<size;i++)
{
    file.read((char*)&buffer,sizeof(char));
    buffer=(buffer+7)%256;
    file.write((char*)&buffer, sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)

我应该在读取之后将文件指针取回一个字节,如下所示:

file.seekg(-1, ios::cur);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Yuk*_*iko 6

是.正如您在问题中所建议的那样,如果要覆盖先前读取的字节,则需要使用seekg调整文件指针的位置.每次读取后,文件指针将位于读取字节之后.