我目前正在尝试从头开始做一个学习型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);
}
在写入数据读取之前,必须添加数据读取到的元素。
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++;
}