【发布时间】:2021-07-11 01:37:17
【问题描述】:
以下代码有问题。这意味着一直要求输入有效,直到输入整数或双精度。它适用于字符,但是当我输入长度超过 1 的字符串时,它将多次运行循环。例如,输入“hello”导致“请输入有效数字”被打印 5 次。有趣的是,“h llo”只会打印该句子 4 次。
int gamenumber;
while(true)
{
cin >> gamenumber;
if(cin.fail())
{
cout << "Please enter a valid number" << endl;
cin.clear();
cin.ignore();
} else
break;
我确实设法通过将“cin.ignore()”替换为“cin.ignore(1000, '\n')”来解决此问题。
但无论如何,我不明白为什么单独使用“cin.ignore()”不能解决这个问题,这让我很烦恼?有没有办法在不使用“cin.ignore(1000, '\n')”的情况下修复上述代码? (这是家庭作业的一部分,可能不允许我们使用“cin.ignore(1000, '\n')”)
谢谢!
【问题讨论】:
-
你想要
std::cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');吗?