gpt4 book ai didi

c++ - 尝试读取包含 int 的文件并存储在 int vector 中,但我不断收到 "Segmentation fault (core dumped)"错误

转载 作者:行者123 更新时间:2023-11-28 01:51:03 28 4
gpt4 key购买 nike

所以我为我的项目制作了这个练习文件,以尝试读取包含整数的文件,并将它们存储在一个 int vector 中。我的问题是每当我运行该程序时,它都会在调用 readFile() 期间给我“段错误(核心已转储)”功能。

不要介意额外的导入,我只是将相同的导入复制并粘贴到我所有的练习文件中。还有 cout << "hi" << endl;就是看程序什么时候出错。

#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cassert>
#include <vector>
using namespace std;

vector<int> readFile(string fileName);

int main()
{
vector <int> intvec = readFile("ints.txt");
cout << "hi" << endl;
for (int i = 0; i < intvec.size(); i++)
{
cout << intvec[i] << endl;
}
return 0;
}

vector<int> readFile(string fileName)
{
ifstream inFile(fileName);
vector<int> inputVec;
int i = 0;
while (!inFile.eof())
{
inFile >> inputVec[i];
i++;
}
inFile.close();
return inputVec;
}

最佳答案

你会想这样做

while (inFile >> i)
{
inputVec.push_back(i);
}

在你的代码中,你定义了inputVec而不给它一个初始容量,所以你可以假设它的大小是0。所以当你写inputVec[i]时,您实际上是在尝试访问 vector 边界之外的索引。这就像访问大小为 4 的数组中的第 5 个元素。

通过使用push_back,您可以向 vector 添加元素,它会动态调整大小。

关于c++ - 尝试读取包含 int 的文件并存储在 int vector 中,但我不断收到 "Segmentation fault (core dumped)"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023825/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com