【发布时间】:2011-02-11 21:10:43
【问题描述】:
为什么 cout 必须在 cin 开始读取之前刷新?他们不是不同的缓冲区吗?我可以将输入读取到缓冲区中,同时将其放入输出缓冲区(在刷新之前).. 2 个不同的缓冲区。我在这里很困惑。
【问题讨论】:
标签: c++
为什么 cout 必须在 cin 开始读取之前刷新?他们不是不同的缓冲区吗?我可以将输入读取到缓冲区中,同时将其放入输出缓冲区(在刷新之前).. 2 个不同的缓冲区。我在这里很困惑。
【问题讨论】:
标签: c++
典型的例子是这样的:
std::cout << "Enter your name: ";
std::string name;
std::cin >> name;
您确实希望在输入之前看到提示,这就是这两个流捆绑在一起的原因。
【讨论】:
它不必被刷新。默认情况下,流是tied 在一起,因此当您执行以下操作时:
cout << "Enter your name:";
cin >> name;
在输入开始之前出现提示 - 这只是一个方便的功能。但是,您可以解开它们:
cin.tie( static_cast<ostream*>(0) );
在对 cin 执行输入之前,不会(必然)刷新哪个 cout。
【讨论】: