将多行输出到文本文件

时间:2011-12-26 15:25:48

标签: c++

之前我已经完成了这个,但找不到示例代码......仍然是c ++的新手。

我需要输出多行到文本文件。现在它只输出最后一行,所以我假设每次循环运行时都会覆盖前一行。如何输出一行然后输出到下一行等,而不必写入前一行?

这是一个片段:

    int main()
{
    int n = 1;

    while (n <= 100)
    {
        int argument = 0 + n;

        ofstream textfile;
        textfile.open ("textfile.txt");
        textfile << argument << endl;
        textfile.close();

        ++n;
    }

    return 0;
}

4 个答案:

答案 0 :(得分:3)

在进入循环之前打开文件,并在退出循环后关闭它。

答案 1 :(得分:1)

看起来默认的打开模式是覆盖,因此它只会先写入文件中的任何内容以及当前写入文件的内容。

以下是保持文件句柄打开而不是多次重新打开。如果你想要追加,你应该使用它:

textfile.open ("textfile.txt", ios::out | ios::app);

这将打开输出文件并附加到文件末尾。

int main()
{
int n = 1;

ofstream textfile;
textfile.open ("textfile.txt");

while (n <= 100)
    {
    int argument = 0 + n;

    textfile << argument << endl;

    ++n;
    }
textfile.close();

return 0;
}

答案 2 :(得分:0)

您应该在循环外打开和关闭文件。打开文件时,默认为覆盖。你可以指定一个追加模式,但由于打开文件是一个有点冗长的操作,在这种情况下你真的不想这样做。

答案 3 :(得分:-1)

请改用:

int main()
{
    int n = 1;

    while (n <= 100)
    {
        int argument = 0 + n;

        ofstream textfile;
        textfile.open ("textfile.txt", ofstream::out | ofstream::app);
        textfile << argument << endl;
        textfile.close();

        ++n;
    }

    return 0;
}