我有一個672字節長的遺留數據結構。這些結構都存儲在一個文件中,按順序,我需要在閱讀它們C++結構比對和STL向量
雖然我可以用一個接一個讀他們,這將是很好的做到這一點。
// I know in advance how many structs to read in
vector<MyStruct> bunchOfStructs;
bunchOfStructs.resize(numberOfStructs);
ifstream ifs;
ifs.open("file.dat");
if (ifs) {
ifs.read(&bunchOfStructs[0], sizeof(MyStruct) * numberOfStructs);
}
這工作,但我認爲它只能工作,因爲數據結構大小碰巧可以被我的編譯器的結構對齊填充整除。我懷疑它會在另一個編譯器或平臺上崩潰。
另一種方法是使用for
循環來一次讀取每個結構。
問題 - >何時需要關注數據對齊?在向量中動態分配內存使用填充還是STL確保元素是連續的?
這些結構是通過遺留代碼寫入文件還是您控制它? – 2010-02-21 23:47:44
它們由遺留代碼編寫。即使我可以更改它,我也可能需要閱讀由較早版本的應用程序編寫的文件。 – Nate 2010-02-21 23:49:57