我在下面的程序中出現了分段錯誤。
爲什麼會發生這種情況,我該如何解決?從程序中創建一個向量的程序中的分段錯誤
#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