众所周知,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. Redis 发布与订阅模式

    subscribe  订阅 publish   发布   频道    发布内容

  2. windows下Jenkins环境搭建

    Jenkins简介 Jenkins是一个开源软件项目,业界著名的持续集成工具. Jenkins 安装准备 1.      安装java 并且配置jdk环境 2.      到Jenkins官网下载Je ...

  3. PHP5 的五种常用模式

    PHP5 的五种常用模式. 工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合.要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程.在更改一个代码片段时,就会发生问题,系 ...

  4. JEECG 新手常见问题大全,入门必读

    大家还有什么问题,请跟帖,谢谢支持..  JEECG常见问题大全 原文地址:http://t.cn/RvYsEF61. jeecg数据库脚本问题   注意:jeecg3.5.2之前版本,不需要数据库脚 ...

  5. AS2 笔记 1——attachMovie 添加库影片

    this["container"].attachMovie("useLoad", "useLoadMc", this.getNextHigh ...

  6. mysql每天凌晨0点准时启动taskeng.exe如何关闭

    MySQL弹出一个taskeng.exe. 内容如下:=====================Start Initialization====================mysql Instal ...

  7. echarts图表--统计图表

    echarts官网图表API:http://echarts.baidu.com/index.html

  8. 数据库操作API 或万能的双下划线

    数据库操作API: 类型 描述 exact 精确匹配: polls.get_object(id__exact=14). iexact 忽略大小写的精确匹配: polls.objects.filter( ...

  9. Python : 什么是*args和**kwargs

    让生活Web个够 先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '-- ...

  10. Tomcat虚拟目录设置

    ssh $host "rm -fr /var/www/$tomcat_name/webapps/*" 远程分发war包部署tomcat项目时,需要先清除项目目录. -------- ...