众所周知,cout是一个流对象,管理一个缓冲区。当使用<<操作符输出字符串时,字符串不是直接被输出到屏幕上,而是首先被插入到该流的缓存(buffer)中。而只有当缓冲区被刷新时,字符串才会显示在屏幕上。

一般来说,有以下几种操作会刷新缓冲区:

  • cout被析构
  • 缓冲区满
  • 使用操纵符主动刷新,例如endl,fflush
  • 使用unitbuf操纵符设置流的内部状态,使得每次向流中插入字符都会刷新流
  • 使用cin读取字符串

但当测试以下代码时:

#include<iostream>
using namespace std;
int main()
{
cout<<"aaa";
while(1);
return 0;
}

虽然不满足上述操作中的任何一个,但字符串aaa仍被输出。vs,g++上均是如此。

经查找资料了解到:当系统空闲时(还有种说法是长时间无输入时)缓冲区会自动刷新。当然这种刷新只是一种“请求”,并不能保证刷新,会不会刷新完全看系统心情_(:3 」∠)_。

所以,并非未刷新缓冲区就输出了字符串,而是系统比较闲,所以顺手帮你刷新了缓冲区。但要想保证在该输出的地方输出,还是安安心心使用endl或fflush吧。( ̄∇ ̄)

【C++】cout未刷新缓冲区仍会输出的问题的更多相关文章

  1. 【Python】【demo实验1】【Python运行时强制刷新缓冲区,输出信息】(Python3 应不存在类似情况)

    [原文] 需求:打印一颗 ”*” 休息1s 代码如下: #!/usr/bin/python #coding=utf-8 ''' 暂停1s输出 ''' import time def printStar ...

  2. 走过的easyui的坑--datagrid的reload在IE下未刷新

    至于为什么要进easyui这个坑,就不多说了. 我现在使用的是1.5这个版本,在用它做一个后台管理系统,项目做到一半,才想起记录这些坑. 1.对于datagrid在reload.load在IE下未刷新 ...

  3. C语言刷新缓冲区(转载)

    C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...

  4. PHP缓冲区强制及时输出

    string '{"multicast_id":4917012850725514945,"success":0,"failure":38,& ...

  5. 使用spring-cloud-starter-bus-amqp做微服务配置刷广播,config-client配置 未刷新的 问题

    在需要配置刷新的(类或方法)上 加上 @RefreshScope 扩展:spring cloud:config-server中@RefreshScope的"陷阱"

  6. Vue2自定义指令改变DOM值后未刷新data中绑定属性的值

    标签(空格分隔): Vue 自定义指令用于过滤输入框,只允许输入数字: Vue.directive('numberOnly', { bind: function (el, binding) { el. ...

  7. C语言 刷新缓冲区

    fflush int fflush(FILE* stream); 用于清空文件缓冲区,如果文件是以写的方式打开 的,则把缓冲区内容写入文件. eg: 1. #include <stdio.h&g ...

  8. c刷新缓冲区

    int c; while((c = getchar()) != '\n' && c != EOF);

  9. C/C++中printf/cout 计算顺序与缓冲区问题

    1.printf/cout在同一个语句中都是从右向左计算的. 看如下的代码: #include <stdio.h> int main() { ; printf("%d %d&qu ...

随机推荐

  1. Implement a deployment tool such as Ansible, Chef, Puppet, or Salt to automate deployment and management of the production environment

    Implement a deployment tool such as Ansible, Chef, Puppet, or Salt to automate deployment and manage ...

  2. 一段JS控制TD中图片的大小的代码

    一段JS控制TD中图片的大小的代码 <table><tr><td id="otd"><div></div><img ...

  3. 4.HTML+CSS制作个月亮

    效果地址:https://codepen.io/flyingliao/pen/LaRmJr?editors=1100 感想:还有缺陷,需后期补充.完善. HTML code: <div clas ...

  4. 机器学习进阶-案例实战-图像全景拼接-图像全景拼接(RANSCA) 1.sift.detectAndComputer(获得sift图像关键点) 2.cv2.findHomography(计算单应性矩阵H) 3.cv2.warpPerspective(获得单应性变化后的图像) 4.cv2.line(对关键点位置进行连线画图)

    1. sift.detectAndComputer(gray, None)  # 计算出图像的关键点和sift特征向量 参数说明:gray表示输入的图片 2.cv2.findHomography(kp ...

  5. oracle数据库升级dbua操作阻塞解决方法(解决ORA-32004报错)

    操作环境 1.SuSE11sp3操作系统 2.oracle 11.2.0.3版本升级到11.2.0.4版本 问题现象   oracle 11.2.0.3版本升级到11.2.0.4版本时执行dbua命令 ...

  6. pip安装提示PermissionError: [WinError 5]错误问题解决

    操作环境   Python3.6 + Winodws7 问题现象 新安装python3.6版本后使用pip安装第三方模块失败,报错信息如下: C:\Users\linyfeng>pip inst ...

  7. windows下如何查看端口,关闭端口,开启端口

    如何查看端口 在Windows 2000/XP/Server 2003中要查看端口,可以使用NETSTAT命令: “开始">"运行”>“cmd”,打开命令提示符窗口.在 ...

  8. python实现排序算法四:BFPTR算法

    所谓的BFPTR算法就是从n个数中寻找最小的K个数,主要思想可以参考注释,写得不是很好,特别是寻找中位数的中位数的时候,欢迎指正: 采用任意排序算法,将分组后的数据进行排序: __author__ = ...

  9. week05 05restful api

    和第一个项目一样 然后去App.js注册一下 但是呢 新闻是写死在 现在主要输调通前端client和后端server 持续获取新闻 至于真假先不考虑 下面我们回到前端NewsPanel 这个reque ...

  10. ArcGIS Python编程案例-电子资料链接

    ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...