社区
C++ 语言
帖子详情
cout是带缓冲的输出吧??
Patricksolo
2011-11-21 07:05:05
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上。
可是为什么 cout<<"a";
while(1);
字符“a”会马上输出呢?而不是等到缓冲区满再输出?谁能我帮我解释一下。
...全文
295
19
打赏
收藏
cout是带缓冲的输出吧??
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上。 可是为什么 cout<<"a"; while(1); 字符“a”会马上输出呢?而不是等到缓冲区满再输出?谁能我帮我解释一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
junlee87
2013-09-15
打赏
举报
回复
自己动手去测试下吧,不同的实现不同。VS2012没有缓冲,gcc有。 http://hi.baidu.com/qclijun/item/ea52ea6d3d03f9127ddecce5
cdsnfresh
2011-11-22
打赏
举报
回复
C++primer里面有,貌似看到过
hastings
2011-11-22
打赏
举报
回复
我依稀记得windows是立刻会显示出来,没有等到缓冲满或其他满足条件才显示出来的情况的,
linux才会缓冲显示,你是windows控制台程序?
only_lonely
2011-11-21
打赏
举报
回复
11楼的猜测很好。
awperpvip
2011-11-21
打赏
举报
回复
这样不出来 编译器跟你急~颠倒一下看他还出来
Patricksolo
2011-11-21
打赏
举报
回复
我知道我要关注什么不该关注什么了,呵呵
我只是觉得11楼的猜测很喜感...
taodm
2011-11-21
打赏
举报
回复
楼主你越迟结贴自己越是容易被误导。
结贴吧,消停点。
yby4769250
2011-11-21
打赏
举报
回复
这个链接可以看到stream的结构图,streambuf应该是每一个stream的一个组成部分
www.cplusplus.com
cout肯定是有缓冲区的,且默认好像是行缓冲,如果没有缓冲区,干嘛需要flush()这个成员函数。
cout<<"a";能马上打印出来,或许能够说明,cout缓冲默认的大小有可能只有1 byte,只是猜测
Patricksolo
2011-11-21
打赏
举报
回复
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上
但是并不是只有这几种情况才输出啊。
os或者说某编译器下如何输出,是一个不值得讨论的问题。
因为你不能依赖此内部实现细节,总该自己用上面那几样东西控制它。
别浪费精力吧。
------------------------------------------------------------------------------
谢谢了!
taodm
2011-11-21
打赏
举报
回复
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上
但是并不是只有这几种情况才输出啊。
os或者说某编译器下如何输出,是一个不值得讨论的问题。
因为你不能依赖此内部实现细节,总该自己用上面那几样东西控制它。
别浪费精力吧。
Patricksolo
2011-11-21
打赏
举报
回复
LS也是只看了我的标题没看我的具体问题...
liutengfeigo
2011-11-21
打赏
举报
回复
行缓冲.
群狼
2011-11-21
打赏
举报
回复
帮楼主顶一下 我也想知道
Patricksolo
2011-11-21
打赏
举报
回复
是很多地方都讲了,不知道LS有没有看我的具体问题。
zh852
2011-11-21
打赏
举报
回复
google cout flush
google cout 缓冲区
等等 很多书上也讲了
前几天看过 忘记了 lz自己网上找找吧
Patricksolo
2011-11-21
打赏
举报
回复
求各路高人指点
qq120848369
2011-11-21
打赏
举报
回复
no why.
NOIP信息学奥赛通关必备-第一个C++程序与
cout
输出
语句
NOIP信息学竞赛C++编程基础语法知识--第一个C++程序与
cout
输出
语句 本课程是符合小学生认知特点的C++编程入门课,讲练结合,提升孩子解决NOIP竞赛试题的能力; 课程案例均采用孩子生活中熟知常见的案例,讲解通俗...
C++中
cout
的含义????
C++中
cout
的含义???? 由于以前学过C,所以这段代码的其它部分在我看来都还算“正常”,然而
cout
却很独特:既不是函数,似乎也不是C++非凡规定出来的像if,for一类有非凡语法的“语句”。由于只是初步介绍,所以那本书只是简单的说
cout
是C++中的“标准输入
输出
流”对象……这于我而言实在是一个很深奥的术语。这还没完,之后又遇见了cin……因为不知底细,从此使用它们的时候都诚
iostream
缓冲
区详解(cin和
cout
)
缓冲
区
缓冲
区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来
缓冲
输入或
输出
的数据,这部分预留的空间就叫做
缓冲
区。
缓冲
区根据其对应的是输入设备还是
输出
设备,分为输入
缓冲
区和
输出
缓冲
区。
缓冲
区的类型
缓冲
区 分为三种类型:全
缓冲
、行
缓冲
和不
带
缓冲
。 1、全
缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全
缓冲
的典型代表是对磁盘文件的
C++
输出
缓冲
输出
函数的
缓冲
区
输出
到对应设备有三种方式: 一:不
缓冲
,也就是说每次输入一个字符,就立即
输出
,stderr就是这种; 二:行
缓冲
:输入一行时,刷新
缓冲
; 三:全
缓冲
:
缓冲
区满了才
输出
,一般文件
缓冲
区用这种; DOS系统,比如Windows的命令行,其默认是不
缓冲
的,所以
cout
,printf等
输出
函数立即
输出
显示在命令行;Linux系统,默认是行
缓冲
; C语言中printf和scanf之间规定:scanf如果需要读入数据,而输入
缓冲
区又没有数据时,则刷新
输出
缓冲
区;C++ 的cin,
cout
无此规定,但是默
随机题:C++ printf和
cout
混用会
带
来哪些问题?以及进制控制的差异
随机题:C++ printf和
cout
混用会
带
来哪些问题?以及进制控制的差异
C++ 语言
64,661
社区成员
250,508
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章