【发布时间】:2016-11-29 17:42:38
【问题描述】:
我在以下程序中遇到了分段错误。
为什么会发生这种情况,我该如何解决?
#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分割空格上的单词。你不需要编写这些类型的循环来完成这项工作。 -
确保你有一个调试版本,并在你的调试器下运行程序。当发生分段错误时,它会显示发生故障的行以及程序状态。或者,您可以检查现有的核心文件。 PS,没有什么能阻止
j跑到最后......