我有以下代码,运行在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,但不起作用。
有什么建议吗?
发布于 2010-06-25 03:27:28
如果您检查正在执行cat的文件,则可能是您的shell配置错误,如果没有行尾,则不会打印该行。
std::endl添加了\n 和刷新。
发布于 2010-06-25 03:24:25
不知道这是否是你尝试过的,但你应该这样做:
file << "Hello World" << std::flush;由于有用的评论,我在这里留下了这个答案
根据反馈,我将修改我的建议:您不应该显式调用std::flush (或file.close() ),因为析构函数会为您做这件事。
此外,调用flush显式地强制执行可能不是最佳方式的I/O操作。推迟到底层的iostreams和操作系统会更好。
显然,OP的问题与调用或不调用std::flush无关,可能是因为试图在调用文件流析构函数之前读取文件。
发布于 2010-06-25 03:55:33
析构函数应该刷新并关闭该文件。
我很确定,这个错误也是另外一个地方
1)您没有在正确的时间点进行检查。在哪个点上比较文件的内容,“在”退出之后,还是在程序退出之前设置断点,然后检查文件内容?
2)不知何故,程序在退出之前崩溃了?
https://stackoverflow.com/questions/3113229
复制相似问题