将文件的当前写入指针传递给C ++中的函数

时间:2016-04-13 04:17:36

标签: c++

假设我想以下列格式写入.txt文件

start-----
-----A----
----------
-B--------
-------end

我有3个将零件写入文件的功能; 开始A A到B 然后 B结束。 我的函数调用将按此顺序

Func1(starts writing from start of file)
{ }
Func2(needs pointer to position A for writing to file)
{ }
Func3(needs pointer to position B for writing to file)
{ }

以Fun1和Func2为例,Func1将在A处结束写入,但问题是Func2需要从A点前进。我怎样才能将位置A的指针传递给Func2以便它能够成为能够继续从文件中的位置A写入吗?

2 个答案:

答案 0 :(得分:1)

由于这是c ++,我们可以使用标准c ++库中的文件流对象。

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

void func1(ofstream& f)
{
  f << "data1";
}

void func2(ofstream& f)
{
  f << "data2";
}

int main () {
  ofstream myfile ("example.txt");
  if (myfile.is_open())
  {
    func1(myfile);
    func2(myfile);
    myfile.close();
  }
  else cout << "Unable to open file";
  return(0);
 }

然而,这种方法是普遍的。当您使用文件时,您将获得一些文件标识符。它可以是FILE结构,Win32 HANDLE等。在函数之间传递该对象将允许您连续写入文件。

答案 1 :(得分:0)

不确定如何输出到文件(使用哪种输出方法),但通常情况下,文件指针会跟踪自己的位置。

例如使用fstream

ofstream outFile;
outFile.open("foo.txt");
if (outFile.good())
{
    outFile<<"This is line 1"<<endl
           <<"This is line 2"; // Note no endl

    outFile << "This is still line 2"<<endl;

}

如果将outFile ofstream对象传递给函数,它应该在输出文件中保持位置。

之前回答:"ofstream" as function argument