我现在从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;
答案 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。