可以使用Cin.Ignore()同时忽略负数,正数和字母吗?

时间:2018-10-05 16:26:58

标签: types while-loop cin assign ignore

我想创建一个简单的while循环,使用cin.ignore()仅在变量x为0、1、2或3时才中断循环。我需要脚本忽略所有其他内容,并提示用户再次输入x的值。

#include <iostream>
#include <limits>

using namespace std;

int main()
{
    int x;
    while(x < 0 || x > 3)
    {
        system("cls");
        cout << "Please enter an x value: ";
        cin >> x;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    cout << "x = " << x << endl;
    return 0;
}

当前,此脚本会忽略负数和正数,但不会忽略char或字符串输入。如何也忽略字符和字符串输入? cin.ignore()似乎将x设置为0并在输入文本时中断。

研究

How to properly use cin.clear an cin.ignore 提供一些有关cin.fail()的有趣信息

Cin.Ignore() is not working 提供有关cin.get()和cin.sync()的一些有趣信息

这些文章涉及cin.ignore()的不同功能,似乎并没有解决完全错误的类型分配及其如何与cin.ignore()一起工作。因此,我假设分配无法将“ dadsa”分配给变量x,并且cin.ignore()消耗了“ dadsa”,从而使x等于0。输入文本时会产生无限循环。谢谢你们!

0 个答案:

没有答案