C ++在main中打开一个文件,由函数读取

时间:2016-02-01 03:15:54

标签: c++

更新:我知道它必须是简单而愚蠢的东西。在尝试了这么多事情之后,我终于意识到我在函数调用中无效。这一直是最大的问题。感谢所有帮助我实现愚蠢的人。

我对此非常陌生,并且看到我从书中学到的风格与我在本网站上看到的风格大不相同。这不是家庭作业,而是来自D.S Malik 5th的练习。

我似乎无法正确地将我的代码粘贴到此网站上,因此我只想抓住几个位置,以便了解我所处的位置。我正在修改我之前编写的程序,以便在main中打开一个文件,并从我的函数中读取它。我该怎么做...就如何从函数中读取main中打开的内容?这是阻止我改变其余部分的部分。非常感谢您的帮助。

更新:由于某种原因,我仍然无法复制和粘贴整个程序,但这里有更多代码片段。我在函数中尝试了istream和ifstream。我也尝试使用inData和inDat。以下是我为自己粘贴的内容所犯的错误: 错误C2182:' getNumber' :非法使用类型' void' 错误C2078:初始化程序太多 错误C2182:' getNumber' :非法使用类型' void' 错误C2078:初始化程序太多

目前主要阅读:

inData >> number;

我需要更改的是我的函数中的旧版本:

void getNumber(int& num)
{cin >> num;//!!!!!!!!!Can't use inData input variable here}


void initialize(int& zeroCount, int& oddCount, int& evenCount);
void getNumber(std::istream& inDat, int& num);
void classifyNumber(int num, int& zeroCount, int& oddCount, int& evenCount);
void printResults(int zeroCount, int oddCount, int evenCount);
int main()

{

int counter; 
int number;
int zeros;
int odds;
int evens;
int randNum;
int i;
int r;
string numList;
ifstream inData;
ofstream outData;
inData.open("random.txt");
outData.open("results.txt");
initialize(zeros, odds, evens);

counter = 1;
void getNumber(inData, number);
while (!inData.eof())
{
    if (counter == 10)
    {
        cout << endl;
        outData << endl;
    }
    cout << setw(4) << number;
    outData << setw(4) << number;
    classifyNumber(number, zeros, odds, evens);
    counter++;
    void getNumber(inData, number);
    if (counter > 20)
    {
        cout << "Error in while loop \"Processing Data\"" << endl;
        break;
    }
} // end while

cout << endl;
printResults(zeros, odds, evens);
cin.sync();
cin.ignore();
return 0;

}

void initialize(int& zeroCount, int& oddCount, int& evenCount)
{
zeroCount = 0;
oddCount = 0;
evenCount = 0;

}

void getNumber(std::istream& inDat, int& num)
{
inDat >> num;

}

1 个答案:

答案 0 :(得分:1)

更改getNumberstd::istream&作为参数。

void getNumber(std::istream& inData, int& num);

并将其实施更改为:

void getNumber(std::istream& inData, int& num)
{
   inData >> num;
}

将被调用的地方更改为:

getNumber(inData, num);