c++:分割错误(核心转储)
c++: segmantation fault (core dumped)
我的程序的目的是读取文件中的单词并计算每个单词的出现次数。下面是代码:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<string> v, vdist;
string parola;
int j=0;
ifstream myfile("example.txt");
if (myfile.is_open()) {
cout << "file openedn";
while (! myfile.eof() ) {
myfile >> parola;
v.push_back(parola);
}
cout << "dimensione file: " << v.size() << endl;
for (int i=0; i< v.size(); i++) {
cout << i << " " << v[i] << endl;
}
sort(v.begin(),v.end());
for (int i=0; i<= v.size()-1; i++) {
if (v[i] != v[i+1]) {
vdist[j] = v[i];
cout << vdist[j] << endl;
j++;
}
vdist[j]= v[v.size()-1];
j++;
}
} else
cout << "file not openedn";
return 0;
}
我所要做的就是创建一个包含所有不同单词的向量vdist
,并计算每个单词的出现次数。显然,这不是最好的方法,但它只是学习。产生分段错误的行如下:
vdist[j] = v[i];
为什么会发生这种情况?
vdist
为空,因此vdist[j]
为越界
相反,看起来你想把值压入vector的末尾:
vdist.push_back(v[i]);
一旦你做了这个改变,j
变量将是多余的,所以你应该删除它。
你也有一个问题在最后的迭代,其中v[i+1]
是越界的。您需要解决这个问题——可能是通过提前停止一次迭代,或者可能是通过将最后一次迭代与其他迭代区别对待。
相关文章:
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- 合并排序:分段错误核心转储
- C++:分段错误(核心转储)
- 从 pybind11 构建导入模块时出现"分段错误(核心转储)"
- 如何使用 lldb 在曼扎罗中调试 lz4 文件格式的核心转储?
- qt C++命令行代码中的分段错误(核心转储)
- 从文件中读取的数据,但发生核心转储错误
- googletest:测试基类具有纯虚拟方法的派生类时的核心转储
- C++ atof - 分段错误(核心转储)
- Linux C 只禁止我的程序使用核心转储
- 为什么我的代码包含错误分段错误(核心转储)?