1

问题是如何使输出文件1在第 1 行、2第 2 行等,因为程序在每次执行循环时都会重写文件,而您只剩下9输出文件中的文件。

   #include <fstream>
   using namespace std;

   void function (int i)
   { 
       ofstream output("result.out");
       output << i << endl;
       output.close();
   }

   int main()
   {
       for (int i=1; i<10; i++)
       {
           function(i);
       }
       return 0;
   }
4

2 回答 2

6

std::ios::app作为第二个参数传递给std::ofstream构造函数。IE

std::ofstream output("result.out", std::ios::app);
于 2013-07-23T13:19:51.100 回答
0

如果你真的想按照自己的方式去做:

void function (int i)
{
    ofstream output("result.out", std::ios::app);
    output << i << endl;
    output.close();
}

int main()
{
    for (int i=1; i<10; i++)
    {
        function(i);
    }
    return 0;
}

添加ios::app不会删除文件的内容,但会附加文本。它有一个缺点 - 如果您想再次调用循环,旧数据仍然存在。

但我建议将for()循环移到函数中。

void function (int i)
{
    ofstream output("result.out");
    for(int j = 1, j < i; j++              
        output << j << endl;                
    output.close();
}

int main()
{
    function(10);

    return 0;
}

结果是一样的,你避免了重复打开和关闭文件,你仍然可以将它作为一个函数使用。

于 2013-07-23T13:38:07.857 回答