ofstream不冲洗

时间:2010-06-24 19:22:50

标签: c++ ofstream

我有以下代码,在Suse 10.1 / G ++ 4.1.0上运行,它不会写入文件:

#include <fstream>
#include <iostream>

int main(){
    std::ofstream file("file.out");
    file << "Hello world";
}

文件已正确创建并打开,但为空。 如果我将代码更改为:

#include <fstream>
#include <iostream>

int main(){
    std::ofstream file("file.out");
    file << "Hello world\n";
}

(在文本中添加\n),它有效。 我也试过冲洗ofstream,但它没有用。

有什么建议吗?

5 个答案:

答案 0 :(得分:8)

如果您检查文件正在执行cat,则可能是您的shell配置错误,如果没有行结束则不打印该行。
std::endl添加了\n 刷新。

答案 1 :(得分:5)

答案 2 :(得分:5)

析构函数应该刷新并关闭文件。

我很确定,错误是另一个地方,

1)您没有在正确的时间点检查。您在哪个位置比较文件的内容,“退出”之后,或者在程序退出之前设置断点然后检查文件内容?

2)程序在退出之前会以某种方式崩溃?

答案 3 :(得分:0)

确实

file << "Hello world" << std::endl;

工作?

endl插入换行符并刷新缓冲区。当你说你已经试过冲洗它时,你指的是那个吗?

答案 4 :(得分:0)

您正在使用Linux,这是一个符合POSIX标准的系统。 POSIX standard定义的内容:

  

零个或多个非换行符加上a的序列   终止换行符。

因此,如果没有换行符,则该文件包含0行,因此为空。