防止输入低于0的字母或数字

时间:2014-04-24 19:04:28

标签: c++ for-loop io

我试图使它不能输入低于0的字母或数字。但如果我输入一封信,我会得到一个无限循环。

这就是我现在所拥有的

int DiskCylCur [DiskDevices];
for (int i = 1; i<=DiskDevices; i++)
{
    int input = 0;
    cout << "Enter the number of Cylenders for Disk " <<  i << " : ";
    cin >> input;
    DiskCylCur[i] = input;
}

为什么会这样?

2 个答案:

答案 0 :(得分:-1)

当您输入字母而不是数字时,cout不会读取数字,而字母会保留在输入流中。

要检测此类错误,请读取字符串,然后将字符串转换为int。

std::string s;
cin >> s;
int input;
if ( sscanf(s.c_str(), "%d", &input) == 1 )
{
  // Got a number. Use it.
}

答案 1 :(得分:-1)

只需使用while循环和测试。

bool ok = false;
while(ok) {
    if (input > 0) {
        ok = true;
    }
}