在cout之后调用scanf

时间:2016-12-07 11:16:11

标签: c++ scanf cout

我编写了一小段代码,其中包含 cout scanf ,其中 cout 打印一条语句,然后 scanf 将值读入整数变量 age 。但是,在我输入年龄值并按回车键之前,该声明不会被打印。请在下面找到代码。我在cpp.sh

上尝试此代码
#include <iostream>
#include <cstdio>

int main(){    
int age;
std::cout << "Please enter your age: ";
scanf("%d", &age);
std::cout << "Hello, your age is: " << age << std::endl;
return 1;
}

2 个答案:

答案 0 :(得分:1)

  

但在我输入年龄值并按回车键之前,该声明不会被打印。

这是因为std::cout缓冲输出达到一定长度或应用了明确的flush()调用。

所以强制输出提示行写:

   std::cout << "Please enter your age: " << std::flush;

答案 1 :(得分:0)

替代方法可能是放置std :: endl;在

结束时
std::cout << "Please enter your age:"<<std::endl;

std :: endl将输出换行符并刷新流。