在使用cin读取输入之前刷新cout ..为什么?

时间:2010-04-24 14:14:07

标签: c++

为什么在cin开始阅读之前必须刷新cout?它们不是缓冲区吗?我可以将输入读入缓冲区,同时将其放在输出缓冲区(冲洗前).2个不同的缓冲区。我在这里很困惑。

2 个答案:

答案 0 :(得分:8)

不必冲洗。默认情况下,流是tied,因此当您执行以下操作时:

cout << "Enter your name:";
cin >> name;

在输入开始之前出现提示 - 这只是一个方便的功能。但是,你可以解开它们:

cin.tie( static_cast<ostream*>(0) );

在cin上执行输入之前,不会(必然)刷新cout。

答案 1 :(得分:6)

典型的例子是:

 std::cout << "Enter your name: ";
 std::string name;
 std::cin >> name;

您确实希望在输入之前看到提示,这就是为什么这两个流绑定在一起的原因。