2015-11-13 52 views
0

所以我寫了一個程序,我可以輸入4個值的名字,姓氏,身高和簽名。我將所有值存儲在Vector中,但現在我想了解如何從矢量中獲取值並將其存儲在文件中,然後從文件中讀取並存儲回矢量中。C++讀寫結構對象到一個文件

vector<Data> dataVector; 
struct Data info; 
info.fname = "Testname"; 
info.lname = "Johnson"; 
info.signature = "test123"; 
info.height = 1.80; 
dataVector.push_back(info); 

代碼看起來像這樣我還沒找到存儲結構的對象到一個文件,所以我要求社區的一些幫助。

+1

爲向量中的每個結構存儲/加載成員。 – Unimportant

回答

2

你應該提供你的結構有一個方法將其寫入流:

struct Data 
{ 
    // various things 
    void write_to(ostream& output) 
    { 
     output << fname << "\n"; 
     output << lname << "\n"; 
     // and others 
    } 
    void read_from(istream& input) 
    { 
     input >> info.fname; 
     input >> info.lname; 
     // and others 
    } 
}; 

或者提供兩個獨立的功能來完成這項工作,就像這樣:

ostream& write(ostream& output, const Data& data) 
{ 
    //like above 
} 
// and also read 

或者,更好,超載<<>>操作:

ostream& operator<<(const Data& data) 
{ 
    //like above 
} 
// you also have to overload >> 

或者,甚至更好,使用提供這種功能的現有庫,如Boost。

最後一個選項有許多優點:您不必考慮如何分離文件中結構的字段,如何在同一個文件中保存更多實例,在重構或修改時必須減少工作量結構。