c++ - C++ 从文本文件中读取
问题描述
我正在尝试从两个文本文件中读取。一次一个,但我不断收到无法打开文件的消息。我试图确保它们在同一个目录中,但它仍然不起作用。谁能告诉我哪里出错了?
这是一个类的构造函数,它从 2 个文本文件中读取并填充两个不同的数组。
这是代码:
#include <iostream>
#include <fstream>
#include "student.h"
#include "staff.h"
#include "studentstaff.h"
using namespace std;
studentstaff::studentstaff()
{
p = new Student[5];
p1 = new Staff[5];
ifstream file;
file.open("Student.txt");
if (!file)
{
cout << "File couldn't open." << endl;
}
else
{
int studentID;
string firstName;
string lastName;
string DOB;
char program;
int credit;
int startYear;
double GPA;
file >> studentID >> firstName >> lastName >> DOB >> program >> credit >> startYear >> GPA;
while (file)
{
for (int i = 0; i < 5; i++)
{
file >> studentID >> firstName >> lastName >> DOB >> program >> credit >> startYear
>> GPA;
p[i].setStudent(
studentID, firstName, lastName, DOB, program, credit, startYear, GPA);
}
}
file.close();
}
ifstream stafffile;
stafffile.open("staff.txt");
if (!stafffile)
{
cout << "File couldn't open." << endl;
}
else
{
string employeefstname;
string employeelstname;
int ID;
string phonenum;
int datehired;
char Code;
double salary;
stafffile >> employeefstname >> employeelstname >> ID >> phonenum >> datehired >> Code
>> salary;
while (stafffile)
{
for (int i = 0; i < 5; i++)
{
stafffile >> employeefstname >> employeelstname >> ID >> phonenum >> datehired
>> Code >> salary;
p1[i].setfirstname(employeefstname);
p1[i].setlastname(employeelstname);
p1[i].setID(ID);
p1[i].setphonenum(phonenum);
p1[i].setdatehired(datehired);
p1[i].setbonuscode(Code);
p1[i].setsalary(salary);
}
}
stafffile.close();
}
}
解决方案
你应该这样写:
int i = 0;
while(file >> studentID >> firstName >> lastName >> DOB >> program >> credit >> startYear >> GPA){
p[i].setStudent(studentID, firstName, lastName, DOB, program, credit, startYear, GPA);
i++;
}
或者,如果输入文件中恰好有 5 条记录,则:
for(int i = 0; i<5; i++){
file >> studentID >> firstName >> lastName >> DOB >> program >> credit >> startYear >> GPA;
p[i].setStudent(studentID, firstName, lastName, DOB, program, credit, startYear, GPA);
}
file.open("Student.txt");
如果您犯了任何错误,还请检查文件名。
推荐阅读
- ffmpeg - 我的单行 ffmpeg 命令有误
- python - 使用 Python HTML 在 AWS Lambda 函数中为电子邮件模板迭代列表
- node.js - 在 Internet Explorer 11 中运行 Meteor 应用程序时出错
- python - 日志条目的第一次和最后一次出现
- rabbitmq - 什么是“孤岛依赖”?
- c++ - 我怎样才能像 ida pro 一样设置 Ghidra?
- openshift - 如何在 Openshift 中使用 oc cli 删除文件/目录
- python - 一个简单的计算器。我想在用户输入 1-4 以外的数字后显示错误消息。它在一个while循环中
- r - R:递归评估存储为列表的二叉树
- python - 如何处理“ValueError:使用序列设置数组元素”。错误