#include <iostream>
using namespace std;
int main()
{
cout << "zz";
cerr << "ed";
return 0;
}
像上面的这段代码,cerr不用存到缓冲区嘛,它就是直接输出到控制台的,但是cout也是直接输出的啊,也没有用endl控制器去刷新缓冲区啊,如果cout输出是要先放到缓冲区,那上面这个简短的程序又是什么刷新了cout的缓冲区啊。
#include <iostream>
using namespace std;
int main()
{
cout << "zz";
cerr << "ed";
return 0;
}
像上面的这段代码,cerr不用存到缓冲区嘛,它就是直接输出到控制台的,但是cout也是直接输出的啊,也没有用endl控制器去刷新缓冲区啊,如果cout输出是要先放到缓冲区,那上面这个简短的程序又是什么刷新了cout的缓冲区啊。
3 回答1.4k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
4 回答931 阅读
1 回答999 阅读
1 回答1k 阅读
1 回答788 阅读
1 回答889 阅读
cout的话, 是行级缓冲, 只要碰到换行符就会flush一次. 但是cout对象在析构的时候也会flush一次. 你那个例子里面, 在return 0之前cout对象需要析构一次.
cerr的话, 已经忘了APUE里面怎么说的了, 调试下来发现没有缓冲.....