3

我试图让我的程序编写一个与主函数不同的函数,但我遇到了很多麻烦。这是我的程序的简化版本:

#include <iostream>
#include <fstream>
using namespace std;

void writeToFile(int x)
{
    outputFile << x << endl;
}

int main()
{
ofstream outputFile;
outputFile.open("program3data.txt");
for (int i = 0; i < 10; i++)
{
    writeToFile(i);
}
outputFile.close();
return 0;
}
4

2 回答 2

5

您的writeToFile函数正在尝试使用outputFile位于不同范围内的变量。您可以将输出流传递给函数,这应该可以工作。

#include <iostream>
#include <fstream>
using namespace std;

void writeToFile(ofstream &outputFile, int x)
{
    outputFile << x << endl;
}

int main()
{
    ofstream outputFile;
    outputFile.open("program3data.txt");
    for (int i = 0; i < 10; i++)
    {
        writeToFile(outputFile, i);
    }
    outputFile.close();
    return 0;
}
于 2013-02-05T21:54:57.903 回答
1

您需要让您的子功能知道outputFile. 如所写,该变量仅存在于“主”函数内部。您可以将函数签名更改为:

void writeToFile(int x, ofstream of)

并称之为:

writeToFile(i, outputFile);

这会将变量传递给子函数,以便它也可以在该范围内使用。

于 2013-02-05T21:55:34.787 回答