我有以下代码,在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,但它没有用。
有什么建议吗?
答案 0 :(得分:8)
如果您检查文件正在执行cat
,则可能是您的shell配置错误,如果没有行结束则不打印该行。
std::endl
添加了\n
和刷新。
答案 1 :(得分:5)
答案 2 :(得分:5)
析构函数应该刷新并关闭文件。
我很确定,错误是另一个地方,
1)您没有在正确的时间点检查。您在哪个位置比较文件的内容,“退出”之后,或者在程序退出之前设置断点然后检查文件内容?
2)程序在退出之前会以某种方式崩溃?
答案 3 :(得分:0)
确实
file << "Hello world" << std::endl;
工作?
endl插入换行符并刷新缓冲区。当你说你已经试过冲洗它时,你指的是那个吗?
答案 4 :(得分:0)