1

我如何寻找超出现有文件的结尾?

考虑一下我有test.bin1000 个字节。

然后我运行以下

std::filebuf fbuf;
fbuf.open("c:\\test.bin", std::ios_base::in | std::ios_base::out | std::ios_base::app | std::ios_base::binary);
fbuf.pubseekoff(10, std::ios_base::end);
fbuf.sputc(1);
fbuf.close();

运行此示例后,我预计新文件大小为 1011 字节。但相反,它在现有文件的末尾添加了 0x01,使其成为 1001 字节。

有趣的是,当它是新文件时,它会按照我想要的方式工作。

我在 Windows 7 x64 上运行它,但目标平台是 Ubuntu。

4

1 回答 1

3

你设置了std::ios_base::app标志。这会导致所有写入都发生在文件末尾。如果您希望在当前位置执行写入,则在打开文件时不能指定此标志。

ios_base::app附加文件;也就是说,总是写到文件的末尾

于 2012-10-12T04:00:23.387 回答