在C ++中如何区分整数和字符?

时间:2011-02-25 08:36:54

标签: c++ character integer

我目前正在学习C ++,并且我被要求制作一个程序,该程序将计算对给定大小的存款支付的利息。其中一个要求是在输入非整数数据时显示错误消息。

但是我无法弄清楚如何检测是否输入了非整数数据。如果有人能提供一个如何解决这个问题的例子,我将不胜感激!

3 个答案:

答案 0 :(得分:12)

您无需检查自己。表达式(std::cin >> YourInteger)计算为bool,当且仅当YourInteger成功读取时才为真。这导致了成语

int YourInteger;
if (std::cin >> YourInteger) {
  std::cout << YourInteger << std::endl;
} else {
  std::cout << "Not an integer\n";
}

答案 1 :(得分:0)

您需要确定输入值是否包含非数字字符。也就是说,除了0-9之外的任何东西。

您必须首先将输入作为字符串,然后验证每个数字是否确实是数字。

您可以使用<cctype>中定义的内置函数isdigit()来迭代字符串并测试每个字符是否为有效数字。如果使用十进制数字,您可能还希望允许使用单个逗号。

答案 2 :(得分:0)

this应该是一个明确的起点。

char* GetInt(char* str, int& n)
{
    n = 0;
    // skip over all non-digit characters
    while(*str && !isdigit(*str) )
        ++str;
    // convert all digits to an integer
    while( *str && isdigit(*str) )
    {
        n = (n * 10) + *str - '0';
        ++str;
    }
    return str;
}