调用函数时程序停止工作。

时间:2013-10-11 10:15:05

标签: c++

在这个函数的某个地方有一个问题,遗憾的是编译器没有说明在哪里。程序停止工作,必须关闭。

我是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;

}

3 个答案:

答案 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++; }