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