为什么在cin开始阅读之前必须刷新cout?它们不是缓冲区吗?我可以将输入读入缓冲区,同时将其放在输出缓冲区(冲洗前).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;
您确实希望在输入之前看到提示,这就是为什么这两个流绑定在一起的原因。