C++ std::string::substr将std::抛出\u范围之外,但参数处于限制范围内

C++ std::string::substr将std::抛出\u范围之外,但参数处于限制范围内,c++,string,substr,outofrangeexception,C++,String,Substr,Outofrangeexception,我有一个字符串向量: vector<string> tokenTotals; 但是,当我尝试获取第二个子字符串时,会出现以下错误: terminate called after throwing an instance of std::out_of_range. what():: basic_string::substr 知道可能发生了什么吗?请参阅。第二个参数是子字符串的长度,而不是子字符串后字符的位置,因此结果是试图访问超出范围的元素-std::out_of_range被抛出

我有一个字符串向量:

vector<string> tokenTotals;
但是,当我尝试获取第二个子字符串时,会出现以下错误:

terminate called after throwing an instance of std::out_of_range.
what():: basic_string::substr
知道可能发生了什么吗?

请参阅。第二个参数是子字符串的长度,而不是子字符串后字符的位置,因此结果是试图访问超出范围的元素-
std::out_of_range
被抛出

对于
tokenTotals[i].substr(0,28)
这个错误不会表现出来,因为子字符串的大小和位置都超过了末端28

substr(29,36);
将尝试获取从位置29开始且大小为36个字符的字符串。不幸的是29+36>41

substr(29,36);