我已閱讀了Stack Overflow和其他一些關於將向量寫入文件的網站的幾篇文章。我已經實現了我感覺的工作,但我遇到了一些麻煩。結構中的一個數據成員是一個類字符串,並且在重新讀入該向量時,該數據將丟失。另外,在編寫第一次迭代之後,其他迭代會導致malloc錯誤。如何修改下面的代碼以實現我想要的將矢量保存到文件的能力,然後在程序再次啓動時再讀入它?目前,讀取是在構造函數中寫入一個只有數據成員是矢量的類的析構函數中完成的,但它具有操作該矢量的方法。讀取和寫入結構向量的文件
這是我讀/寫方法的要點。假設vector<element> elements
...
閱讀:
ifstream infile;
infile.open("data.dat", ios::in | ios::binary);
infile.seekg (0, ios::end);
elements.resize(infile.tellg()/sizeof(element));
infile.seekg (0, ios::beg);
infile.read((char *) &elements[0], elements.capacity()*sizeof(element));
infile.close();
寫:
ofstream outfile;
outfile.open("data.dat", ios::out | ios::binary | ios_base::trunc);
elements.resize(elements.size());
outfile.write((char *) &elements[0], elements.size() * sizeof(element));
outfile.close();
STRUCT元件:
struct element {
int id;
string test;
int other;
};
你用什麼C++學習資料告訴你這樣做文件訪問? – 2010-11-29 01:18:41
這是一項家庭作業的一部分,它要求我們使用fstream將矢量數據讀/寫到文件中。由於我們沒有完全覆蓋向班級中的文件進行復雜的矢量寫入,因此我閱讀了fstream文檔等,並在線查看了示例。我決定用二進制文字編寫是最簡單的方法。調整大小等某些細節是我選擇要限制的文件大小。我們沒有正式的書或教材。我們有一些在線筆記,但它們並不像實現我所需要的那麼詳細。 – 2010-11-29 01:38:24