我想知道是否可以從二進制文件中讀取一個字節爲「fstream」,然後更改該字節並將其寫回。 我試過這段代碼,但它沒有工作,沒有任何反應,但我確信它能正確讀取。C++,同時讀寫二進制文件
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));
}
我應該採取的文件指針一個字節讀這樣回來後:
file.seekg(-1, ios::cur);
在此先感謝。
如果你在linux上,你可以使用mmap,它將文件映射到虛擬內存中。然後,您可以像訪問數組一樣訪問文件內容。 – 2010-02-23 09:45:02
謝謝ar 我不是在linux中,但我會在linux上嘗試它,它一定很有趣。 – Auxiliary 2010-02-23 09:48:55
Boost.Iostreams爲windows和posix平臺提供內存映射文件。 – 2010-02-23 10:10:49