所以,我正在使用getline(cin, str);
然后string text[str.length()];
获得句子,然后在for语句中我想要将它们组合起来(text[e] = text[e] + str[i];
)我得到了分段错误。完整代码:
#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
string str;
int i, e, space = 0;
getline(cin, str);
string text[str.length()];
for(i=0; i<str.length(); i++) {
if(str[i]==' ') {
space++;
e++;
}
else {
text[e] = text[e] + str[i];
}
}
return 0;
}
答案 0 :(得分:5)
e
是单元化的,并且它将保持一个可能超出text
范围的随机值,从而导致分段错误。这不会将所有变量初始化为零:
int i, e, space = 0;
仅space
初始化为零。改为:
int i = 0, e = 0, space = 0;
或:
int i = 0;
int e = 0;
int space = 0;
据我所知,c ++不支持可变长度数组。