c++问题(cout输出不显示)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++问题(cout输出不显示)相关的知识,希望对你有一定的参考价值。

#include <iostream.h>
#include <stdio.h>
struct person // 结构定义

char name[10];
;
person allone[6];
void main()

int i;
for(i = 0;i < 6;i++) // 输入数据

cout<<i<<":name: "; //(1)
gets(allone[i].name); //(2)
cout<<endl;



运行的时候,语句(1)和(2)是颠倒执行的,先要求输入,再显示"0:name:".
为什么会这样?
具体可拖入vc++6.0看.

参考技术A 这是因为你同时用iostream和stdio两种输入输出标准导致的,你应该只用一个,要么用C的,要么用C++的。
如:
//#include <iostream.h>
#include <stdio.h>
struct person // 结构定义

char name[10];
;
person allone[6];
void main()

int i;
for(i = 0;i < 6;i++) // 输入数据

printf("%d name:",i); //(1)
gets(allone[i].name); //(2)
printf("\n");

本回答被提问者采纳
参考技术B #include <iostream.h>
#include <stdio.h>
struct person // 结构定义

char name[10];
;
person allone[6];
void main()

int i;
for(i = 0;i < 6;i++) // 输入数据

// cout<<i<<":name: "; //(1)
cout<<i<<":name: "<<endl; //要输出endl将缓冲里的内容输出
gets(allone[i].name); //(2)
// cout<<endl;

参考技术C 你在(1)语句后面加上一个<<endl换行就好了

最新xcode中有关cout不输出的问题

上两张图,图一可以看出,在cout结尾有endl的时候,cout输出正常,cin也能接收,图二删掉cout结尾的endl,cout就无法输出了,简直醉了前两天刚更新的xcode,难道又有什么新的c++标准了?不用endl清除缓冲区就没法输出了?求解怎么解决,不想用print系列,输入输出流省事

参考技术A 这个不是最新的问题
而是C语言和C++一直都是这样的。
输出不会直接输出到屏幕
而是先存在缓冲中
遇到三种情况会刷新到屏幕
1 遇到换行符。 这个是最常见的。 加一个\n或者endl就好
2 调用刷新缓冲区函数 比如fflush等。
3 缓冲区满。 这个遇到的概率最低。 不过 如果你死循环打印一个字符, 没有endl情况下, 过一段时间会出来一大段。追问

一直都这样?以前用cout的时候从来不会这样啊。而且根据标准c的规范,
在1、缓冲区满 2、遇到换行符 3、遇到输入这三种情况时,从缓冲区输出到屏幕,根据图2,我已经满足了第三种情况,有了输入,但依旧没有输出到屏幕

追答

遇到输入还不刷,那可能就有问题了。你试试加flush看看行不行

以上是关于c++问题(cout输出不显示)的主要内容,如果未能解决你的问题,请参考以下文章

C++ cout利用控制符dechex和oct,分别输出十进制十六进制和八进制显示整数

C++中使用cout输出int时,怎么在高位补0?如输出003.

c++ cout需要包含哪个头文件?

C++ 指针显示不可能的内存位置

visualstudio中输入2显示正确

最新xcode中有关cout不输出的问题