如何在每次调用输出文件的最后一行时写入c ++函数

时间:2013-07-23 13:17:05

标签: c++ fstream ofstream

问题是如何使输出文件在第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;
   }

2 个答案:

答案 0 :(得分:6)

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

std::ofstream output("result.out", std::ios::app);

答案 1 :(得分: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;
}

结果相同,您可以避免重复打开和关闭文件,仍然可以将其用作函数。