所以..我是初学者,我正在创造一个真正的"基本"计算器,我想如果输入是一个字母而不是一个数字,程序应该怎么做,每次输入错误时,我会使用很多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,程序认为其他字符等于零。该功能完成了它的工作,计算器工作得很好,但我认为这不是一个实用的解决方案,可能我需要制作一个程序,用户输入一个数字,但零是一个重要的输入,我认为必须就像一个声明或功能,我不知道会做什么,所以任何帮助?有谁可以告诉我这项工作真正起作用的功能是什么?因此对于仅检查字母等的功能 提前谢谢。
答案 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;
}