关于c++输入输出和缓冲

wuboy2000 2004-05-06 04:13:13
我刚接触c++,看到有书上说c++定义的I/O是缓冲的,我不太理解是什么意思。
比如说“endl”和“\n”的区别,endl清空缓冲区而\n不清空,这指什么意思?能不能说具体点,具体体现在什么地方不一样?
还有cerr和clog都是对应标准错误流的,只不过一个非缓冲,一个缓冲。我就是不明白这里是否非缓冲体现在什么地方。
...全文
50 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mobihigh 2004-05-06
"c++为每个流关联一个缓冲区”只是指为每个流设定了缓冲区,输入输出
的数据先是存放在开辟的缓冲区中,只有当缓冲区满或者程序命令输出,
缓冲区的数据才会输入输出的。这些都由相应的类来实现的。并不需要你来
干预。
  • 打赏
  • 举报
回复
wuboy2000 2004-05-06
书上原文为:
c++将输入和输出看作字节流。c++为每个流关联一个缓冲区。输入来自此缓冲区,输出也写到此缓冲区。这意味这c++定义的I/O(输入\输出)是缓冲的。
这一段我就糊涂,“c++为每个流关联一个缓冲区”,是什么意思?是说先把要输入输出的字节放到一片内存空间(缓冲区)?
还有,“输入来自此缓冲区,输出也写到此缓冲区。”是不是说反了?
  • 打赏
  • 举报
回复
cngdzhang 2004-05-06
有缓冲的不是立即输出的,无缓冲的是立即输出的,
建立缓冲的目的是提高输入输出效率

endl是先输出'\n'再用cout.flush()进行刷新(清空);
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2004-05-06 04:13
社区公告
暂无公告