为什么在cin开始阅读之前必须刷新cout?它们不是缓冲区吗?我可以将输入读入缓冲区,同时将其放在输出缓冲区(冲洗前).2个不同的缓冲区.我在这里很困惑.
小智 8
它不必刷新.默认情况下,流tied一起使用,以便在执行以下操作时:
cout << "Enter your name:";
cin >> name;
Run Code Online (Sandbox Code Playgroud)
输入开始之前出现提示 - 这只是一个方便的功能.但是,你可以解开它们:
cin.tie( static_cast<ostream*>(0) );
Run Code Online (Sandbox Code Playgroud)
在cin上执行输入之前,不会(必然)刷新cout.
典型的例子是这样的:
std::cout << "Enter your name: ";
std::string name;
std::cin >> name;
Run Code Online (Sandbox Code Playgroud)
您确实希望在输入之前看到提示,这就是为什么这两个流绑定在一起的原因.