2015-10-24 3 views
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; 

}

можно также включать в себя класс заключенный в случае необходимости, чтобы выяснить этот вопрос.

ответ

2
for (int i = 0; i <= idNum.size(); i++) 

должен быть

for (int i = 0; i < idNum.size(); i++) 
+0

Возможно? Определенно. – Barmar

+0

@Barmar Непонятно, как 'idNum.size()' относится к 100;) Но я предполагаю, что он равен числу заключенных. – vsoftco

+0

Что значит «100»? Вероятно, ошибка связана с 'idNum [i]', а не 'p [i]'. C++ не выполняет проверку границ для обычных массивов, только такие классы, как 'vector' – Barmar

Смежные вопросы