首页 > 解决方案 > 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();
    }
}

标签: c++

解决方案


你应该这样写:

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");如果您犯了任何错误,还请检查文件名。


推荐阅读