首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ofstream不刷新

ofstream不刷新
EN

Stack Overflow用户
提问于 2010-06-25 03:22:50
回答 5查看 17K关注 0票数 12

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

代码语言:javascript
复制
#include <fstream>
#include <iostream>

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

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

代码语言:javascript
复制
#include <fstream>
#include <iostream>

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

(在文本中添加一个\n ),它可以工作。我也尝试过刷新ofstream,但不起作用。

有什么建议吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-25 03:27:28

如果您检查正在执行cat的文件,则可能是您的shell配置错误,如果没有行尾,则不会打印该行。

std::endl添加了\n 刷新。

票数 10
EN

Stack Overflow用户

发布于 2010-06-25 03:24:25

不知道这是否是你尝试过的,但你应该这样做:

代码语言:javascript
复制
file << "Hello World" << std::flush;

由于有用的评论,我在这里留下了这个答案

根据反馈,我将修改我的建议:您不应该显式调用std::flush (或file.close() ),因为析构函数会为您做这件事。

此外,调用flush显式地强制执行可能不是最佳方式的I/O操作。推迟到底层的iostreams和操作系统会更好。

显然,OP的问题与调用或不调用std::flush无关,可能是因为试图在调用文件流析构函数之前读取文件。

票数 5
EN

Stack Overflow用户

发布于 2010-06-25 03:55:33

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

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

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

2)不知何故,程序在退出之前崩溃了?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3113229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档