程序要求输入数字时,防止用户输入字母的最简单方法是什么?

问题描述 投票:1回答:1

假设我有一个名为“ varFloat”的浮点变量,并且我使用cin允许用户输入数字,如何防止用户输入字母?

我有一个计算器程序,如果输入字母而不是数字,则会中断。

        cout << "Enter num1: ";
        cin >> num1;
        cin.ignore(); 

        do
        {
            //Select function
            cout << "Enter a function ('+' '-' '*' '/'):";
            getline(cin, function);

            if (function == "+" || function == "-" || function == "*" || function == "/")
            {
                break;
            }
            else
            {
                cout << function << " IS AN INVALID FUNCTION" << endl;
            }
        } while (function != "+" || function != "-" || function != "*" || function != "/");

如果为num1输入一个字母,则程序似乎跳过了getline,并不断打印“ IS IN INVALID FUNCTION”。

string floating-point int cin
1个回答
0
投票

如何防止用户输入字母?

代码不能。尝试输入A时,没有魔术手臂拍打用户的手。

相反,形成一个辅助函数,而不是简单的cin >> num1;,以接受输入的line,分析其正确性并报告结果。有3个结果:输入可接受,输入仍然不接受,cin仍打开,输入不可接受,并且cin关闭。

也许扩展助手功能以丢弃不可接受的输入并在cin仍处于打开状态时重新提示。

对于float,我在C中使用诸如this之类的代码来执行此代码,该代码采用strtof()进行解析并提供解析的结束位置。

© www.soinside.com 2019 - 2024. All rights reserved.