【发布时间】:2014-05-24 19:13:38
【问题描述】:
运行时出现此错误:
在抛出 'std::out_of_range' 的实例后调用终止 what(): basic_string::substr
问题出在这部分代码中,但我是全新的,我不明白应该如何解决这个问题。 content 是我的字符串向量。
int i=1;
std::string v1, v2, weight;
while(!content.empty())
{
v1 = content[i].substr(2,1);
v2 = content[i].substr(5,1);
weight = content[i].substr(8,1);
i++;
}
【问题讨论】:
-
嗯,您访问的向量超出范围。
-
@juanchopanza 错误在
substr,而不是向量访问器。 -
@Barmar 你怎么能确定
substr有问题?你见过存储在向量中的字符串吗? -
@Barmar:不是在你对它执行
[]时,不。 -
@user3084640:嗯,那也错了。它实际上有很多更多错误。当向量在循环期间从不减小大小时,为什么要尝试根据向量是否为空来控制循环的生命周期? C++ 新手与否只是缺乏常识。查看 C++ 书中有关如何迭代容器的部分。
标签: c++ c++11 outofrangeexception