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