我在下面的程序中出现了分段错误。
为什么会发生这种情况,我该如何解决?从程序中创建一个向量的程序中的分段错误
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
std::vector<std::string> split_words(std::string s) {
std::vector<std::string> v(1, "");
int i=0;
int wortanzahl = 0;
while(i<s.size()) {
if (s[i]!=' ') {
v.resize(wortanzahl + 1, "");
for (int j=i; s[j]!=' '; ++j) {
v[wortanzahl] += s[j];
i=j;
}
++wortanzahl;
}
++i;
}
}
int main() {
std::string s = "Alpha beta! Gamma";
split_words(s);
return 0;
}
使用'std :: istringstream'拆分空间上的单词。你不需要编写这些类型的循环来完成这项工作。 – PaulMcKenzie
确保你有一个调试版本,然后在你的调试器下运行该程序。发生分段错误时,它会向您显示它发生的位置和程序状态。或者,您可以检查现有的核心文件。 PS,没有什么能阻止'j'跑完了...... – Useless