isdigit()未将“1”识别为数值

时间:2015-12-14 02:24:46

标签: c++ validation

我正在解析一个字符串,验证字符串中的数字是否为int。

std::string segmentS
if(!isdigit(std::stoi(segmentS))){
    std::cout<<"Not a location +"<<segmentS<<std::endl;

    //does something
    break;
}

segmentS是子串,假设是整数 即使我确保segmentS是一个数字,!isdigit(std::stoi(segmentS))仍然适用。即使在非位置消息之后打印出segmentS,它也是1,这是一个数字,但当它遇到这个if语句时,它不会被视为数字。

2 个答案:

答案 0 :(得分:2)

std::stoi(segmentS)会将segmentS转换为int值,然后将其传递到isdigit,但isdigit假定输入为字符

移除对stoi的调用。

答案 1 :(得分:1)

isdigit将单个char作为输入,而不是整数。