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

C++ Substr()运行时错误:已调用R6010中止,c++,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;

我想把一个字符串转换成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--];
    }
}
bignum::bignum(const std::string&s){
std::字符串tmp;
常量无符号整数s_size=sizeof(s)/sizeof(char);
const unsigned int max_size=4;
const unsigned int parts=s_size/max_size;
无符号整数x=3;
对于(int i=s_size;i>0;i-=4){
tmp=s.substr(s_size-max_size,max_size);
std::cout num[x--];
}
}
num是一个向量,类型为int


我想问题是因为substr超出了范围,但不知何故我无法使其工作

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

const unsigned int s_size = s.size();

sizeof(s)将为您提供字符串对象的大小,而不是字符串中的字符数。为此,您必须调用s.size()(或s.length()),我知道,但我希望使用字符串中的每4个字节。这就是为什么我把它分成4个字节。也许我错了。顺便说一句,我也犯了同样的错误。解释了我的意思。如果我们有一个您期望的输入类型的示例,这也会有所帮助。我想您希望在
substr
调用中使用
I
而不是
s_size
,对吗?@user2351645这是什么意思?我的意思是我收到了相同的错误消息。但我想我刚刚发现了问题所在。所以,我有字节值,而不是字符序列的索引。这就是问题所在。:)