为什么cin在里面而不停止获取用户输入?

时间:2015-10-16 10:43:50

标签: c++ while-loop cin

我现在从C ++开始,所以我想这将是一个非常容易解决的问题。

好吧,为什么" cin>> X"如果用户输入一个字符,代替一个数字,那么就不会停止循环以获取用户输入?

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int x = 0;
    cout << "Please, enter x: ";
    cin >> x;
    while (!cin)
    {
        cout << "Please, it must be a number!\n";
        cin >> x;
    }
    cout << "Thanks!.";
    cin.ignore();
    cin.ignore();
}

我只花了两天时间研究C ++,所以我完全不知道&#34; cin&#34;真的是。我试过&#34; cin.sync()&#34;和&#34; cin.clear()&#34;,但仍然没有运气。 而且我知道不可能像&#34; cin = true&#34;或&#34; cout&lt;&lt; CIN&#34;

2 个答案:

答案 0 :(得分:3)

嗯,你的程序应该稍微纠正

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int x = 0;
    cout << "Please, enter x: ";
    cin >> x;
    while (!cin)
    {
        cin.clear();
        cin.ignore(10000, '\n');
        cout << "Please, it must be a number!" << endl;
        cin >> x;
    }
    cout << "Thanks!.";
}

这种方式可以按预期工作。有关它的更多信息here。一般来说,你需要从cin中清除所有错误的东西。

答案 1 :(得分:0)

如果用户输入的字符超过了字符的ascii值,那么它就不会停止。 要停止循环,请输入0。