将输入验证为double / integer的函数

时间:2015-07-06 05:02:21

标签: c++ function

所以..我是初学者,我正在创造一个真正的"基本"计算器,我想如果输入是一个字母而不是一个数字,程序应该怎么做,每次输入错误时,我会使用很多IF / else语句,clear.cin,ignore.cin。之后,我想我会创建一个函数来自动检查输入是否是整数,并且首先想到的是:

bool checkInputDouble (char x)

{

if (x>0 || x<0 || x==0)
 {return true;}

    else
    {return false;}

} 

我认为这些适用于任何数字,但不适用于字母或任何其他字符,但是,它不起作用。经过几次试验,我发现省略了&#34; x == 0&#34;条件会解决这个问题,因为SOMEHOW,程序认为其他字符等于零。该功能完成了它的工作,计算器工作得很好,但我认为这不是一个实用的解决方案,可能我需要制作一个程序,用户输入一个数字,但零是一个重要的输入,我认为必须就像一个声明或功能,我不知道会做什么,所以任何帮助?有谁可以告诉我这项工作真正起作用的功能是什么?因此对于仅检查字母等的功能 提前谢谢。

3 个答案:

答案 0 :(得分:1)

此功能应该有效:

bool isDigit(char x){
   if (x>='0'&&x<='9')return true;
    else return false;}

您还可以使用isdigit()标题中的cctype功能:

#include <iostream>
#include <cctype>

int main(){
    std::cout<<isdigit('x')<<isdigit('0');
    return 0;}

注意:如果您想要一个更通用的解决方案,将任何类型的输入验证为double / integer,see this answer instead

答案 1 :(得分:0)

也许您可以使用this answer中的代码。

double GetDouble() {
    double x;
    cin >> x;
    while (cin.fail() || (cin.peek() != '\r' && cin.peek() != '\n')) {
        cout << "Invalid Input! Please input a numerical value." << endl;
        cin.clear();
        while (cin.get() != '\n');
        cin >> x;
    }
    return x;
}

编辑:还使用numeric math中的功能 例如isnan()isfinite()isnormal()

答案 2 :(得分:-1)

您可以使用内置的c ++ isdigit功能。在你的代码中,你将字符变量与整数进行比较,这就是为什么你出错了。

您可以这样写:

tp <- summarySE(Theoph, measurevar = c("conc"), 
            groupvars = c("Subject", "Wt", "Dose"))

或者可以使用自己的条件,如:

   bool checkInputDouble (char x)

    {

         if ( isdigit(x))
           return true;
         else
           return false;

    }