c++ vector 下标超出范围错误

标签 c++ vector

该程序应该打开一个 .csv 文件并将数据输入到一个 vector 中。稍后我应该实现一个优先级队列。但是,当我尝试运行它时出现此错误。

#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;

如果需要解决问题,我还可以包括囚犯类。

最佳答案

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

应该是

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

关于c++ vector 下标超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33313376/

相关文章:

c++ - RAII 和未初始化的值

c++ - 如何比较两个 Qstring?

c++ - 如何编写一个简单的代码分析器?

c++ - 使用 pow 进行 Gamma 校正

c++ - 需要修改我的递归算法

C++ vector 范围构造函数

r - 根据字符的有序向量过滤数据帧的行

c++ - 从 ifstream 文件读取给出错误的大小

r - 将向量列表组合到 data.frame 中,并带有列表编号

c++ - 在 DLL 数据段中存储 vector