在 C++ 中检查输入类型
to check type of input in c++
## 检查在 cpp 中输入的数据类型 ##
int main()
{
int num;
stack<int> numberStack;
while(1)
{
cin>>num;
if(isdigit(num))
numberStack.push(num);
else
break;
}
return(0);
}
如果我将一个变量声明为整数,并输入一个字母,比如 'B',而不是数字,我可以检查用户的这种行为吗?我上面的代码在输入第一个数字时退出并且不等待更多输入。
首先,std::isdigit
函数检查字符是否是数字。
其次,通过使用输入运算符>>
,您将确保输入的是一个数字,否则将在std::cin
对象中设置一个state flag。因此,例如
while (std::cin >> num)
numberStack.push(num);
如果出现错误、文件末尾或您输入的内容无效,则循环将结束 int
。
使用 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);
}
首先将您的输入作为字符串
使用 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";
}
}
## 检查在 cpp 中输入的数据类型 ##
int main()
{
int num;
stack<int> numberStack;
while(1)
{
cin>>num;
if(isdigit(num))
numberStack.push(num);
else
break;
}
return(0);
}
如果我将一个变量声明为整数,并输入一个字母,比如 'B',而不是数字,我可以检查用户的这种行为吗?我上面的代码在输入第一个数字时退出并且不等待更多输入。
首先,std::isdigit
函数检查字符是否是数字。
其次,通过使用输入运算符>>
,您将确保输入的是一个数字,否则将在std::cin
对象中设置一个state flag。因此,例如
while (std::cin >> num)
numberStack.push(num);
如果出现错误、文件末尾或您输入的内容无效,则循环将结束 int
。
使用 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);
}
首先将您的输入作为字符串
使用 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";
}
}