使用和传递输入文件给函数

Using and Passing input files to functions

本文关键字:文件 函数 输入      更新时间:2023-10-16

我有一个带有字符(分数)的输入文件,我试图将它们输入到使用函数和输入文件的数组中。我不相信我正确地声明/传递输入文件(iFile)。任何对我的语法和参数的帮助将是伟大的。

错误(s):'std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char;_Traits = std::char_traits]' is private

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void readInput(char gradeArray[][3], ifstream iFile);
void spitOutpt(char gradeArray[][3], ifstream iFile);
int main()
{
    ifstream iFile;
    iFile.open("grades.txt");
    char gradeArray[5][3];
    readInput(gradeArray, iFile);
    spitOutpt(gradeArray, iFile);
    return 0;
}
void readInput(char gradeArray[][3], ifstream iFile)
{
    for(int r = 0; r < 5; r++)
        {
            for(int c = 0; c < 3; c++)
            {
            iFile >> gradeArray[r][c];
            }
        }
    return;
}
void spitOutpt(char gradeArray[][3], ifstream iFile)
{
    cout << "All Grades" << endl;
    cout << left << setw(10) << "Student";
    cout << left << setw(10) << "English";
    cout << left << setw(10) << "History";      
    cout << left << setw(10) << "Math";
    cout << endl;

    for(int r = 0; r < 5; r++)
        {
        cout << "#" << left << setw(10) << r;
            for(int c = 0; c < 3; c++)
            {
            cout << left << setw(10) << gradeArray[r][c];
            }
        cout << endl;
        }
    return;
}

通过引用传递std::ifstreamstd::ofstream

它们没有复制构造函数

void readInput(char gradeArray[][3], ifstream& iFile);
void spitOutpt(char gradeArray[][3], ifstream& iFile);

清理建议

你用ifstream作为spitOutpt的论据似乎是不对的。也许你的意思是要成为一个ofstream

void spitOutpt(char gradeArray[][3], ofstream& oFile);
然后将main更改为:
int main()
{
    ifstream iFile;
    iFile.open("grades.txt");
    char gradeArray[5][3];
    readInput(gradeArray, iFile);

    ofstream oFile;
    oFile.open("grades-out.txt");
    spitOutpt(gradeArray, oFile);
    return 0;
}