c++检查int或char并返回文本

C++ checking an int or char and returning a text

本文关键字:返回 文本 char 检查 int c++      更新时间:2023-10-16

我想知道是否有一个特定的函数来检查输入是int还是字符。

然后返回一个答案,如"这是一个整数"或"这是一个字符"。

如果没有特定的转换功能,我应该如何去做?

提前感谢!!

将输入作为字符串。检查字符串是由单个字符还是多个字符(仅限数字)组成。然而,你认为"2"是什么?字符2或整数2 ?

您可以使用isdigit函数检查输入的字符是否是整数,检查数字0 1 2 3 4 5 6 7 8 9如:

#include<iostream>
using namespace std;
int main(){
    char inp;
    cin>>inp;
    if(isdigit(inp))
        cout<<"Integer";
    else
        cout<<"Character";
    return 0;
}

我就是这么做的

#include<ctype.h>
str_int_check(char *a)//checks weather all elements of string are integers
{
    int flag= 0;
    for(int i = 0; a[i]; i++)
    {
        if(isdigit(a[i])) ;
        else if (a[i]== '-' && i == 0);//in case of negative values
        else
        {
            flag = -1;
            break;
        }
    }
    return flag;        //returns 0 if all characters are digit, else returns 1
}

我更喜欢试错方法:尝试将传入的字符串解析为整数,检查错误,如果是,传递的值不是整数。例如,strtol有非常方便的接口:

#include <cstdlib>
#include <iostream>
#include <cstring>
#include <errno.h>
const char* the_answer(const char* str) {
    char* end; // Pointer to first invalid character found by strtol
    const char* endstr = str + std::strlen(str); // Last character in string
    long val = strtol(str, &end, 10);
    if(val == 0) {
        // Not all characters were parsed, consider as characters
        if(endstr != end)
            return "This is an characters";
        // This is valid, but too long integer to be kept in long type
        if(errno == ERANGE) 
            return "This is an integer";
    }
    return "This is an integer";
}

给出如下:

0 This is an integer
20 This is an integer
-20 This is an integer
2000000000000000000000000000000000000000000000000000 This is an integer
0xABCD This is an characters
Hello, World This is an characters

注:从the_answer返回字符串实际上是笑话,返回枚举值或布尔值。