C ++:使用isdigit检查字符串字符是否为数字。 。

时间:2012-09-13 04:42:16

标签: c++ string

我正在使用getline在循环中读取我的程序的输入。

    string temp(STR_SIZE, ' ');
    string str_num(STR_SIZE, ' ');
    ...
    getline(cin, temp, '\n');

之后,我使用函数查找下一个分隔符(空格)并将空格前的所有字符分配给str_num。看起来像这样:

    str_num.assign(temp, 0, next_white_space(0));

我已经证实这很有效。我的解决方案的下一步是将str_num转换为int(这部分也很好),但我应该检查以确保str_num中的每个字符都是一个数字。这是我尝试过的最好的东西:

    if(!isdigit(str_num[0] - '0')) {
        cout << "Error: Not an appropriate value\n";
        break; /* Leave control structure */
    }

由于某种原因,它始终打印错误消息并退出结构。 这是为什么? 我之前使用了operator []作为字符串对象,它似乎运行良好。但是,在这里,它完全搞砸了我。

感谢。

1 个答案:

答案 0 :(得分:7)

std::isdigit获取char的整数值并检查它。

因此,删除 - '0'并将str_num [index]传递给isdigit()。

注意:因为这个函数来自C,所以将字符作为整数处理的旧样式在采用int的方法中显示出来。但是,字符可以提升为int值,因此char变为int就好了,这就可以了。