0
该程序应该打开.csv文件并将数据输入到矢量中。后来我应该实现一个优先队列。但是,当我尝试运行它时遇到此错误。C++矢量下标超出范围错误
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include "Prisoner.h"
#include "Jailed.h"
using namespace std;
int main()
{
string line, ID, sentenceIn, servedIn, lastName, firstName;
int sentence, served;
vector<string> idNum;
vector<int> sentenceLen;
vector<int> servedTime;
vector<string> lastNameIn;
vector<string> firstNameIn;
ifstream data("prisoner_data.csv");
if (!data.is_open())
{
exit(EXIT_FAILURE);
}
while (getline(data, line))
{
getline(data, ID, ',');
cout << ID << " ";
idNum.push_back(ID);
getline(data, sentenceIn, ',');
cout << sentenceIn << " ";
istringstream(sentenceIn) >> sentence;
sentenceLen.push_back(sentence);
getline(data, servedIn, ',');
cout << servedIn << " ";
istringstream(servedIn) >> served;
servedTime.push_back(served);
getline(data, lastName, ',');
lastNameIn.push_back(lastName);
cout << lastName << " ";
getline(data, firstName, ',');
firstNameIn.push_back(firstName);
cout << firstName << " ";
}
Prisoner p[100]; // Initializing Prisoner class
for (int i = 0; i <= idNum.size(); i++)
{
p[i].setIdNum(idNum[i]);
p[i].setSentence(sentenceLen[i]);
p[i].setTimeServed(servedTime[i]);
p[i].setLastName(lastNameIn[i]);
p[i].setFirstName(firstNameIn[i]);
}
data.close();
system("pause");
return 0;
}
我还可以包括囚犯类,如果需要弄清楚的问题。
可能?当然。 – Barmar
@Barmar目前还不清楚'idNum.size()'是如何与100相关的;)但我的猜测是它等于囚犯的数量。 – vsoftco
'100'与它有什么关系?这个错误大概是关于'idNum [i]'而不是'p [i]'。 C++不会为普通数组进行边界检查,只有类似'vector' – Barmar