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

yap*_*m01 2 c++

为什么在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.


sbi*_*sbi 7

典型的例子是这样的:

 std::cout << "Enter your name: ";
 std::string name;
 std::cin >> name;
Run Code Online (Sandbox Code Playgroud)

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