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

C++ 调用函数时,程序停止工作。,c++,C++,这个函数中的某个地方出现了问题,不幸的是编译器并没有说在哪里。程序停止工作,必须关闭 我是C++的乞丐,所以我做了一些蠢事,但我不知道什么。< /P> 我将感激任何帮助 vector< vector<string> >gsiread16::make_section(vector<string> blocks) { string code; string code2; vector<string> section; vector< vecto

这个函数中的某个地方出现了问题,不幸的是编译器并没有说在哪里。程序停止工作,必须关闭

我是C++的乞丐,所以我做了一些蠢事,但我不知道什么。< /P> 我将感激任何帮助

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;
vectorgsiread16::make_段(矢量块){
字符串代码;
字符串代码2;
向量部分;
向量<向量>部分;
对于(int i=0;i

}越界索引,其中
0越界索引,其中
0
那是永远不会过去的

i = index - 1;
可能会以无休止的循环结束

那是永远不会过去的

i = index - 1;

当i=blocks.size()-1时,可能会以无限循环结束

超出以下范围: 代码2=块[i+1]。子序列(0,3)

这也是一个无止境的循环: 而(代码2==“*11”){


当i=blocks.size()-1时超出以下范围: 代码2=块[i+1]。子序列(0,3)

这也是一个无止境的循环: 而(代码2==“*11”){


在调试模式下,一步一步地进入你的函数,看看它发生在哪里在调试模式下,一步一步地进入你的函数,看看它发生在哪里为什么它不能被传递?哦,我明白了,就像我说的,我是一个初学者,我做了一些非常愚蠢的事情。非常感谢:)为什么它不能被传递?哦,我明白了,就像我说的,我是一个初学者,我做了一些事情ng非常愚蠢。非常感谢:)我正在处理文件。块表示文件中的一行,在以*41开头的一行之后,将始终有另一行row@Jefffrey:如果控件转到循环,则不会中断循环或更改条件。我正在处理文件。块表示文件中的一行,在一行之后永远都会有另一个row@Jefffrey:如果控制转到循环,则不会中断循环或更改条件。
> while(code2 == "*11" ) {
>     section.push_back( blocks[ index ] );
>     index++; }
i = index - 1;
                section.push_back( blocks[ index ] );
                index++; }