假设我想以下列格式写入.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写入吗?
答案 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对象传递给函数,它应该在输出文件中保持位置。