之前我已经完成了这个,但找不到示例代码......仍然是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;
}
答案 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;
}