提问者:小点点

如何阅读直到eof没有核心倾销?


我目前正在尝试从头开始做一个学习型Ai来熟悉它是如何工作的(项目代码链接在这里,我当前的问题是找到一种方法,一旦eof已经达到,就停止第20行的while循环。我尝试过使用fin.eof,当我使用它时得到的输出是“分段错误(核心转储)”。我如何让代码正常运行?

下面是我的代码:

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

struct Match{
    vector<int> sitVal;
    vector<int> opVal1;
    vector<int> opVal2;
    vector<int> opVal3;
};
//fills chosen Match with data from file
void conData(string file, Match& sits){
    ifstream fin;
    fin.open(file);
    int jump;
    fin >> jump;
    int i = 0;
    while(true){
        fin >> sits.sitVal[i];
        if (!fin)
            break;
        fin >> sits.opVal1[i];
        fin >> sits.opVal2[i];
        fin >> sits.opVal3[i];
        i++;
    }
    //following is for testing
    cout << sits.sitVal[0];
    cout << sits.opVal1[0];
    cout << sits.opVal2[0];
    cout << sits.opVal3[0];
}

int main(){
    Match sits;
    conData("Data.txt", sits);
}

共1个答案

匿名用户

在写入数据读取之前,必须添加数据读取到的元素。

    while(true){
        // read first data
        int sitValTemp;
        fin >> sitValTemp;
        if (!fin)
            break;

        // add elements
        sits.sitVal.push_back(sitValTemp);
        sits.opVal1.push_back(0);
        sits.opVal2.push_back(0);
        sits.opVal3.push_back(0);

        // read rest data
        fin >> sits.opVal1[i];
        fin >> sits.opVal2[i];
        fin >> sits.opVal3[i];
        i++;
    }