【发布时间】:2016-10-13 17:21:15
【问题描述】:
我是 C++ 新手,正在尝试创建一个基本程序。请求两个值并将结果存储在单独的变量中,如下所示:
#include <iostream>
using namespace std;
int main () {
int sizeOfArray = -1, bufferSize = -1;
while (true){
cout << "Enter the size of the array: " << endl;
cin >> sizeOfArray;
if (cin.fail())
cin.clear();
cout << "Enter the size of the buffer (k): " << endl;
cin >> bufferSize;
if (cin.fail())
cin.clear();
if (sizeOfArray > 0 && bufferSize > 0){
break;
}
}
return 0;
}
但是,当输入一个非 int 类型的值而不是清除并请求下一个输入时,我会遇到如下所示的无限 while 循环:
输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): 输入数组的大小: 输入缓冲区的大小 (k): ^C
【问题讨论】:
-
你还必须消耗错误的输入来清除输入缓冲区。
标签: c++ while-loop inputstream