C++ 缓冲区清除的问题
"hello"之后多打了两个空格,不是输出hello的时候缓冲区就刷新了吗,为什么getline又读到了两个数据??...
"hello" 之后多打了两个空格,不是输出hello的时候缓冲区就刷新了吗,为什么getline 又读到了两个数据??
展开
展开全部
每个IO对象管理一个缓冲区,如cin管理一个输入缓冲区, cout管理一个输出缓冲区。
使用cout输出hello,刷新了对应的输出缓冲区,对输入缓冲区没有影响,输入缓冲区里没有被读取的内容可以继续读取。
使用cout输出hello,刷新了对应的输出缓冲区,对输入缓冲区没有影响,输入缓冲区里没有被读取的内容可以继续读取。
更多追问追答
追问
我想问您一下,像这样的代码 cout<<"hello,world."; 这段代码什么时候将数据送入缓冲区的??没有提供显示刷新,那要通过什么方式再写入输出流中?
追答
cout是标准输出流类ostream的一个对象,cout<<"hello, world";这样的代码就是调用cout.operator<<(const char *)这样的函数,一旦调用了该函数,数据就会被送入cout对应的输出缓冲区。
以下方式可以刷新缓冲区将缓冲区的内容写入输出流:
1. 程序正常结束
2. 缓冲区已满
3. 用操纵符如endl, flush等显示刷新
4. 使用unitbuf操纵符来设置流的内部状态,可以没次写完就刷新
5. 与输入流关联起来(tie)。
最好提供显示刷新,否则大型程序中某些情况下缓冲区不会立即刷新,从而导致您的如debug信息不能及时显示出来。
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询