std :: cin不会在输入错误时抛出异常

用户2993456

我只是试图编写一个从cin读取的简单程序,然后验证输入是否为整数。如果是这样,我将退出while循环。如果没有,我将再次要求用户输入。

我的程序可以编译并正常运行,这很棒。但是,如果我输入非数字值,它不会提示您输入新的内容。是什么赋予了?

#include <iostream>
using namespace std;

int main() {
    bool flag = true;
    int input;
    while(flag){
        try{ 
            cout << "Please enter an integral value \n";
            cin >> input;
            if (!( input % 1 ) || input == 0){ break; }
        }
        catch (exception& e)
        { cout << "Please enter an integral value"; 
        flag = true;}
    }
    cout << input;
    return 0;
}
本·沃格特

除非您通过告诉C ++ iostream,否则它们不会使用异常cin.exceptions( /* conditions for exception */ )

但是您的代码流毫无例外地更加自然。只是做if (!(cin >> input)),等等。

还请记住在再次尝试之前清除故障位。

整个事情可以是:

int main()
{
    int input;
    do {
       cout << "Please enter an integral value \n";
       cin.clear();
       cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    } while(!(cin >> input));
    cout << input;
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(C ++)不会在std :: cin上停止并进入无限循环吗?

来自分类Dev

(C ++)不会在std :: cin上停止并进入无限循环吗?

来自分类Dev

解析JSON而不会在错误时引发异常?

来自分类Dev

为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

来自分类Dev

std :: cin无限循环输入错误

来自分类Dev

巨大的std :: vector <std :: vector>不会在销毁时释放所有内存

来自分类Dev

std :: cin:清空输入缓冲区而不会阻塞

来自分类Dev

std :: cin:清空输入缓冲区而不会阻塞

来自分类Dev

被抛出的异常不会在`on`子句中被捕获(类型似乎是错误的)

来自分类Dev

std :: regex构造抛出异常

来自分类Dev

是否保证std :: vector不会在元素之间留下空隙?

来自分类Dev

QList中的std :: shared_ptr不会在删除时删除内容

来自分类Dev

使用std :: cin中的std :: setw限制输入大小

来自分类Dev

来自无效输入的std :: cin无限循环

来自分类Dev

使用std :: cin输入停止while循环

来自分类Dev

线程创建C ++ std :: thread抛出异常

来自分类Dev

在最后一次出现定界符之后,std :: getline会从std :: cin跳过输入,但不会与std :: istringstream的输入一起跳过

来自分类Dev

PDO不会在错误的SQL查询上引发异常

来自分类Dev

Windows上的VSCode:gdb不会在“抛出”时中断,但会在常规异常时中断

来自分类Dev

std :: cin >> std :: string如何实现?

来自分类Dev

std :: cout << std :: cin有什么作用?

来自分类Dev

std :: cin跳过空格

来自分类Dev

错误:std :: cin的“ operator >>”不匹配

来自分类常见问题

输入错误的std :: strftime崩溃

来自分类Dev

输入错误的std :: strftime崩溃

来自分类Dev

为什么Meteor autoForm afQuickField Errors不会在错误时显示?

来自分类Dev

如何运行makefile,使其不会在错误时退出并继续编译其余文件?

来自分类Dev

不会引发std :: out_of_range异常

来自分类Dev

不会引发std :: out_of_range异常

Related 相关文章

  1. 1

    (C ++)不会在std :: cin上停止并进入无限循环吗?

  2. 2

    (C ++)不会在std :: cin上停止并进入无限循环吗?

  3. 3

    解析JSON而不会在错误时引发异常?

  4. 4

    为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

  5. 5

    std :: cin无限循环输入错误

  6. 6

    巨大的std :: vector <std :: vector>不会在销毁时释放所有内存

  7. 7

    std :: cin:清空输入缓冲区而不会阻塞

  8. 8

    std :: cin:清空输入缓冲区而不会阻塞

  9. 9

    被抛出的异常不会在`on`子句中被捕获(类型似乎是错误的)

  10. 10

    std :: regex构造抛出异常

  11. 11

    是否保证std :: vector不会在元素之间留下空隙?

  12. 12

    QList中的std :: shared_ptr不会在删除时删除内容

  13. 13

    使用std :: cin中的std :: setw限制输入大小

  14. 14

    来自无效输入的std :: cin无限循环

  15. 15

    使用std :: cin输入停止while循环

  16. 16

    线程创建C ++ std :: thread抛出异常

  17. 17

    在最后一次出现定界符之后,std :: getline会从std :: cin跳过输入,但不会与std :: istringstream的输入一起跳过

  18. 18

    PDO不会在错误的SQL查询上引发异常

  19. 19

    Windows上的VSCode:gdb不会在“抛出”时中断,但会在常规异常时中断

  20. 20

    std :: cin >> std :: string如何实现?

  21. 21

    std :: cout << std :: cin有什么作用?

  22. 22

    std :: cin跳过空格

  23. 23

    错误:std :: cin的“ operator >>”不匹配

  24. 24

    输入错误的std :: strftime崩溃

  25. 25

    输入错误的std :: strftime崩溃

  26. 26

    为什么Meteor autoForm afQuickField Errors不会在错误时显示?

  27. 27

    如何运行makefile,使其不会在错误时退出并继续编译其余文件?

  28. 28

    不会引发std :: out_of_range异常

  29. 29

    不会引发std :: out_of_range异常

热门标签

归档