cin 的奇怪行为

Strange behavior of cin

我一直在练习一些 C++。这是一个简单的程序,但是我在玩终端时发现在 'input' 中输入密码时有一个奇怪的行为。看来 'Give me the password' 消息之前的缓冲区 'triggers'。我怎样才能避免这种奇怪的行为?

我正在为 C/C++ 开发人员使用 Eclipse IDE

版本:Neon.3 发布 (4.6.3) 构建 ID:20170314-1500

提前致谢

#include <iostream>

using namespace std;

/*  DO WHILE EXAMPLE*/
int main() {

    const string password = "car";
    string input;
    do {
        cout << "Give me the password\n";
        cin >> input;

    if (input != password) {
            cout << "Incorrect Password\n";
    }

    } while (input != password);
    cout << "Correct Password";
    return 0;
}

这是正确的行为

这是不正确的行为

这真的很奇怪。除了编译器为您的 OS 或其他东西生成错误代码之外,似乎没有其他原因。如果可能的话,我建议获得 Visual Studio 2017。

写入 cout 后尝试等待。