C++ Substr()运行时错误:已调用R6010中止
我想把一个字符串转换成4个整数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;
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这是什么意思?我的意思是我收到了相同的错误消息。但我想我刚刚发现了问题所在。所以,我有字节值,而不是字符序列的索引。这就是问题所在。:)