我如何寻找现有文件的结尾?
考虑我有test.bin
这是1000字节。
然后我运行以下
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。
答案 0 :(得分:3)
您设置了std::ios_base::app
标志。这会导致所有写入都发生在文件末尾。如果要在当前位置执行写入,则在打开文件时无法指定此标志。
ios_base::app
附加档案;也就是说,总是写到文件的末尾