在这个函数的某个地方有一个问题,遗憾的是编译器没有说明在哪里。程序停止工作,必须关闭。
我是c ++的初学者,所以我做了一些蠢事,但我不知道是什么。
我会帮助你。
vector< vector<string> >gsiread16::make_section(vector<string> blocks) {
string code;
string code2;
vector<string> section;
vector< vector<string> > sections;
for ( int i = 0; i < blocks.size(); i++) {
code = blocks[ i ].substr(0,3);
if( code == "*41" ) {
code2 = blocks[ i+1 ].substr(0,3);
if( code2 != "*11" ) continue;
int index = i +1;
while(code2 == "*11" ) {
section.push_back( blocks[ index ] );
index++;
}
sections.push_back(section);
section.clear();
i = index - 1;
} else continue;
}
return sections;
}
答案 0 :(得分:3)
> while(code2 == "*11" ) {
> section.push_back( blocks[ index ] );
> index++; }
永远无法通过......
i = index - 1;
可能以无限循环结束
答案 1 :(得分:2)
超出范围的索引0 <= i < size
:
blocks [i+1]
i+1
超过i=blocks.size()-1
的有效索引。
此外,这个循环永远不会完成:
while(code2 == "*11" ) {
section.push_back( blocks[ index ] );
index++;
}
答案 2 :(得分:0)
当i = blocks.size() - 1时,达到了界限: code2 = blocks [i + 1] .substr(0,3);
这也是一个无限循环: while(code2 ==“* 11”){
section.push_back( blocks[ index ] );
index++; }