Substr()运行时错误:已调用R6010中止

时间:2013-07-14 19:49:58

标签: c++

我想将字符串转换为4个整数。

bignum::bignum(const std::string& s){
    std::string tmp;
    const unsigned int s_size = sizeof(s)/sizeof(char);
    const unsigned int max_size = 4; 
    const unsigned int parts = s_size/max_size; 
    unsigned int x = 3;

    for(int i = s_size;i>0;i-=4){
        tmp = s.substr(s_size-max_size, max_size);
        std::cout << num[x] << std::endl;
        std::istringstream (tmp) >> num[x--];
    }
}

num是一个向量,类型为int。

我猜问题是因为s​​ubstr超出范围,但不知怎的,我无法让它工作。

1 个答案:

答案 0 :(得分:2)

std::string是一个类,而不是char的数组,因此使用sizeof会给出一个意外的数字。只需使用size成员函数:

const unsigned int s_size = s.size();