C ++如何在不中断程序的情况下输入用户值

我正在尝试从用户那里获取一个整数,但是如果他们键入“ ckefkfek”,它将导致该程序被垃圾邮件破坏。我也希望他们输入一个浮点数,但是我遇到了同样的问题,却不知道如何检查。

int option = 0;
while (option != 3)
{
    cout << "Enter 1, 2, or 3: ";
    cin >> option;
    switch (option)
    {
        case 1:
            cout << "Enter a float: ";
            float myfloat;
            cin >> myfloat;
            myFunc(myfloat); // must be a float for this function to work.
            break;
        case 2:
            // do stuff
            break;
        case 3:
            // do stuff
            break;
        default:
            cout << endl << "Not a valid option." << endl;
            break;
    }
}

如何在没有持续错误的情况下做到这一点?谢谢!

乔纳森·韦克利
bool input_ok = false;
while (!input_ok)
{
  cout << "Enter 1, 2, or 3: ";
  if (cin >> option)
  {
    input_ok = true;
    ...
  }
  else
  {
    cout << "Stop being silly\n";
    std::string dummy;
    if (cin >> dummy)
      cin.clear();
    else
      throw std::runtime_error("OK, I'm not playing any more");
  }
}

基本上,如果输入可能失败,则需要测试输入是否失败。您可以通过使用来检查流后的状态cin >> option; if (cin) ...,或者通过将读取和测试进行如下组合来测试该流的状态if (cin >> option) ...

如果输入失败,请读取无法解析为整数的任何内容并将其丢弃,然后重试。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不中断客户端的情况下向 C# 界面中的方法添加参数?

来自分类Dev

控件如何在不中断C#的情况下从一个开关箱转到另一个开关箱?

来自分类Dev

在C#WinForms中,如何在不中断其他代码执行的情况下分配标签文本几秒钟并再次将其删除?

来自分类Dev

c-如何在没有输入且没有字符串的情况下中断scanf

来自分类Dev

如何在没有用户输入密码的情况下用C#加密和解密敏感信息

来自分类Dev

如何在不中断用户体验的情况下对齐中心?

来自分类Dev

如何在不中断Kinect的情况下运行方法

来自分类Dev

C ++,如何在不对程序进行硬编码的情况下从命令行提供输入文件名?

来自分类Dev

如何在不中断用户会话的情况下部署MVC 4应用程序

来自分类Dev

如何在不中断循环的情况下返回值?

来自分类Dev

C#代码或库可在不中断客户端的情况下更新虚拟目录内容

来自分类Dev

如何在不被ctrl + c中断的情况下登录桌面?

来自分类Dev

如何在不被ctrl + c中断的情况下登录桌面?

来自分类Dev

如何在不使用argv和argc的情况下将总和值传递给C ++程序

来自分类Dev

如何在不将输入存储在c ++中的情况下打印输入?

来自分类Dev

如何在不输入 C++ 中的单词的情况下只输入就停止 cin >> ?

来自分类Dev

在数字为C#的情况下,如何用用户输入填充数组

来自分类Dev

如何在不使用 C 中的数组的情况下读取给定的“n”输入?

来自分类Dev

如何在不等待换行的情况下在C中接受用户输入?

来自分类Dev

C / Linux:如何在不使用“ getlogin”的情况下获取用户登录名

来自分类Dev

我们如何在不中断实时流量的情况下更新已部署的Flask应用程序?

来自分类Dev

如何在不中断make过程的情况下中断make中的过程

来自分类Dev

如何在不与用户交互的情况下授权.NET 5.0 / C#应用程序与Microsoft 365 SharePoint Online交互?

来自分类Dev

如何在不与用户交互的情况下授权.NET 5.0 / C#应用程序与Microsoft 365 SharePoint Online交互?

来自分类Dev

如何在不指定类的情况下使用MongoDB C#驱动程序

来自分类Dev

如何在不指定-I标志的情况下使用本征编译C ++程序?

来自分类Dev

如何在Raspberry Pi上没有操作系统的情况下运行C程序?

来自分类Dev

如何在不使用IDE的情况下更改C#程序的图标?

来自分类Dev

如何在不使用Visual Studio的情况下编译和运行C#程序?

Related 相关文章

  1. 1

    如何在不中断客户端的情况下向 C# 界面中的方法添加参数?

  2. 2

    控件如何在不中断C#的情况下从一个开关箱转到另一个开关箱?

  3. 3

    在C#WinForms中,如何在不中断其他代码执行的情况下分配标签文本几秒钟并再次将其删除?

  4. 4

    c-如何在没有输入且没有字符串的情况下中断scanf

  5. 5

    如何在没有用户输入密码的情况下用C#加密和解密敏感信息

  6. 6

    如何在不中断用户体验的情况下对齐中心?

  7. 7

    如何在不中断Kinect的情况下运行方法

  8. 8

    C ++,如何在不对程序进行硬编码的情况下从命令行提供输入文件名?

  9. 9

    如何在不中断用户会话的情况下部署MVC 4应用程序

  10. 10

    如何在不中断循环的情况下返回值?

  11. 11

    C#代码或库可在不中断客户端的情况下更新虚拟目录内容

  12. 12

    如何在不被ctrl + c中断的情况下登录桌面?

  13. 13

    如何在不被ctrl + c中断的情况下登录桌面?

  14. 14

    如何在不使用argv和argc的情况下将总和值传递给C ++程序

  15. 15

    如何在不将输入存储在c ++中的情况下打印输入?

  16. 16

    如何在不输入 C++ 中的单词的情况下只输入就停止 cin >> ?

  17. 17

    在数字为C#的情况下,如何用用户输入填充数组

  18. 18

    如何在不使用 C 中的数组的情况下读取给定的“n”输入?

  19. 19

    如何在不等待换行的情况下在C中接受用户输入?

  20. 20

    C / Linux:如何在不使用“ getlogin”的情况下获取用户登录名

  21. 21

    我们如何在不中断实时流量的情况下更新已部署的Flask应用程序?

  22. 22

    如何在不中断make过程的情况下中断make中的过程

  23. 23

    如何在不与用户交互的情况下授权.NET 5.0 / C#应用程序与Microsoft 365 SharePoint Online交互?

  24. 24

    如何在不与用户交互的情况下授权.NET 5.0 / C#应用程序与Microsoft 365 SharePoint Online交互?

  25. 25

    如何在不指定类的情况下使用MongoDB C#驱动程序

  26. 26

    如何在不指定-I标志的情况下使用本征编译C ++程序?

  27. 27

    如何在Raspberry Pi上没有操作系统的情况下运行C程序?

  28. 28

    如何在不使用IDE的情况下更改C#程序的图标?

  29. 29

    如何在不使用Visual Studio的情况下编译和运行C#程序?

热门标签

归档