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

时间:2016-09-02 19:42:08

标签: c++

我有一个带有字符(成绩)的输入文件,我正在尝试使用函数和输入文件将它们输入到数组中。 我没有相信我正确地声明/传递输入文件(iFile)。任何有关我的sytax和参数的帮助都会很棒。

错误(S): ' std :: basic_streambuf< _CharT,_Traits> :: basic_streambuf(const std :: basic_streambuf< _CharT,_Traits>&)[with _CharT = char; _Traits = std :: char_traits]'是私人的

#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;
}

1 个答案:

答案 0 :(得分:2)

通过引用传递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;
}