##检查在cpp ##
中输入的数据类型int main()
{
int num;
stack<int> numberStack;
while(1)
{
cin>>num;
if(isdigit(num))
numberStack.push(num);
else
break;
}
return(0);
}
如果我将变量声明为整数,并输入一个字母,比如说'B'而不是数字,我可以检查用户的这种行为吗?当输入第一个数字并且不等待更多输入时,我的代码将退出。
答案 0 :(得分:2)
首先,std::isdigit
函数检查字符是否为数字。
其次,通过使用输入操作符>>
,您将确保输入是一个数字,或者std::cin
对象中将设置state flag。因此,例如。
while (std::cin >> num)
numberStack.push(num);
如果出现错误,文件结尾或输入的内容不是有效int
,则循环将结束。
答案 1 :(得分:0)
使用cin.fail()检查错误并清理输入缓冲区。
int num;
while (1) {
cin >> num;
if (cin.fail()) {
cin.clear();
cin.sync();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
if (num == -1) {
break;
}
numberStack.push(num);
}
答案 2 :(得分:-2)
首先将您的输入作为字符串
使用像isdigit()这样的库中的版本将其分类为整数
否则如果包含“。”,则为浮点数
否则,如果它是字母数字,那么它就是一个字符串
下面的代码
#include<iostream>
#include<string.h>
using namespace std;
int isint(char a[])
{
int len=strlen(a);
int minus=0;
int dsum=0;
for(int i=0;i<len;i++)
{
if(isdigit(a[i])!=0)
dsum++;
else if(a[i]=='-')
minus++;
}
if(dsum+minus==len)
return 1;
else
return 0;
}
int isfloat(char a[])
{
int len=strlen(a);
int dsum=0;
int dot=0;
int minus=0;
for(int i=0;i<len;i++)
{
if(isdigit(a[i])!=0)
{
dsum++;
}
else if(a[i]=='.')
{
dot++;
}
else if(a[i]=='-')
{
minus++;
}
}
if(dsum+dot+minus==len)
return 1;
else
return 0;
}
int main()
{
char a[100];
cin>>a;
if(isint(a)==1)
{
cout<<"This input is of type Integer";
}
else if(isfloat(a)==1)
{
cout<<"This input is of type Float";
}
else
{
cout<<"This input is of type String";
}
}