2016-04-13 47 views
0

假設我要在文本文件中寫入以下格式傳遞一個文件的當前寫指針在C++函數

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將結束在寫作,但問題是,FUNC2需要從A點前進如何傳遞A位置指向Func2的指針,以便它能夠繼續從文件中的位置A進行寫入?

+0

c和C++是不同的語言。選一個你需要的。 – Ari0nhh

+0

完成了,我想要的C++。 – Prime

回答

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等。在函數之間傳遞該對象將允許您連續寫入該文件。

+0

正是我要找的,謝謝你! – Prime

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