2017-07-07 80 views
-1

我一直在练习一点C++。这是一个简单的程序,但是我已经玩过终端,并且在'输入'中输入密码时我注意到了一种奇怪的行为。看起来缓冲区在'给我密码'消息之前'触发'。我怎么能避免这种奇怪的行为?cin的奇怪行为

我使用的Eclipse IDE的C/C++开发人员

版本: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; 
} 

Correct Behavior这是正确行为

Incorrect Behavior这是不正确的行为

+0

你使用什么编译器?它看起来像cin/cout不是'tie()'d http://en.cppreference.com/w/cpp/io/basic_ios/tie – sehe

回答

0

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

尝试等待写入cout后。

+0

甚至有一个提示OP使用Windows? – iehrlich

+0

不,但这就是我为他所得到的一切。大声笑 – user8210143

+0

谢谢。我刚刚报告了错误 – ed9uardo0