繁体   English   中英

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

[英]C++: Checking whether a string character is a digit using isdigit. .

我正在使用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 []用于字符串对象,并且它似乎运行良好。 但是,这完全把我搞砸了。

谢谢。

std::isdigit接受char的整数值并检查它。

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

注意:由于此函数来自C,因此将char作为整数处理char的旧样式通过采用int的方法来显示。 但是,char可以提升为int值,因此char变成一个int就可以了,这是可行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM