猿问

使用cin-C ++的良好输入验证循环

我是第二个OOP课程,我的第一堂课是用C#教的,所以我是C ++的新手,目前我正在使用cin练习输入验证。所以这是我的问题:


这个循环我构建了一个很好的验证输入的方法吗?或者有更常见/可接受的方式吗?


谢谢!


码:


int taxableIncome;

int error;


// input validation loop

do

{

    error = 0;

    cout << "Please enter in your taxable income: ";

    cin >> taxableIncome;

    if (cin.fail())

    {

        cout << "Please enter a valid integer" << endl;

        error = 1;

        cin.clear();

        cin.ignore(80, '\n');

    }

}while(error == 1);


慕慕森
浏览 417回答 3
3回答

qq_花开花谢_0

我不是开启iostreams异常的忠实粉丝。I / O错误不够特别,因为错误通常很可能。我更喜欢使用异常来减少错误条件。代码也不错,但跳过80个字符有点武断,如果你摆弄循环就不需要错误变量(bool如果你保留它就应该如此)。你可以将读取cin直接放入一个if,这可能更像是一个Perl习语。这是我的看法:int taxableIncome;for (;;) {&nbsp; &nbsp; cout << "Please enter in your taxable income: ";&nbsp; &nbsp; if (cin >> taxableIncome) {&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; cout << "Please enter a valid integer" << endl;&nbsp; &nbsp; &nbsp; &nbsp; cin.clear();&nbsp; &nbsp; &nbsp; &nbsp; cin.ignore(numeric_limits<streamsize>::max(), '\n');&nbsp; &nbsp; }}除了仅跳过80个字符外,这些只是轻微的狡辩,更多的是首选风格。
随时随地看视频慕课网APP
我要回答