C++将字符串中的数字提取到数组中

对于一个数组,如果输入的形式是字符串,如“[1,2,3,4]”,我们没法直接使用里面的数字,为此,要将数字提取出来。
若key=false且当前字符是数字,则当前字符是该数的第一个字符,加入数组中,如果其前一个字符为负号,则该数为负数。若key=true且当前字符是数字,则当前字符不是数字的第一个字符,要与数组中的最后一个数字进行组合。

vector<int> strToArr(string str){
    
    
    int len = str.size();
    vector<int> res;
    bool key = false;
    for (int i = 0; i < len; i++){
    
    
    if (str[i] >= '0' && str[i] <= '9'){
    
    //遇到数字
            if (key)//不是数字的第一个字符
                *(res.end()-1) = *(res.end()-1) * 10 + str[i] - '0';
            else{
    
    
                int tmp = str[i]-'0';
                if (str[i-1] == '-')//负数
                    tmp *= -1;
                res.push_back(tmp);//将数字的第一个字符添加到数组中
                key = true;
            }
        }
        else//遇到的不是数字
            key = false;
    }
    return res;
}

猜你喜欢

转载自blog.csdn.net/qq_42820853/article/details/107015763