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

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

endl是先输出'\n'再用cout.flush()进行刷新(清空);

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧