(已撤消)C ++ fstream在重新打开

时间:2017-03-07 17:13:02

标签: c++ fstream

注意:我无法使用其他文件重现此错误,因此必须有一些副作用。请暂时忽略!

编译器:Microsoft C ++ 2010,平台:Windows 8

我使用std :: fstream打开现有文本文件以在文件末尾附加数据。这应该很简单:

ofstream out;
out.open(fname);
out << "Hello";
out.close();
out.open(fname, ios::in | ios::out | ios::ate);
out << "World";
out.close();

数据将在末尾附加,但第一个新char会自动替换为NULL字节:

Hello\0orld

这是在重新打开文件关闭的那一刻发生的。文件仍然打开时,一切都很好:

ofstream out;
out.open(fname);
out << "Hello";
out.close();                // -> "Hello"
out.open(fname, ios::in | ios::out | ios::ate);
out << "World";
out.flush();                // -> "HelloWorld"
out.seekp(-7, ios::cur);
out << "Test";
out.flush();                // -> "HelTestrld"
out.close();                // -> "HelTe\0torld"

NULL字节始终位于写指针重新打开文件时的位置。

我以前的编译器从未见过这种行为。有什么想法吗?

0 个答案:

没有答案