2013-05-26 90 views
0

我知道如何用fstream讀寫完整的結構體。但僅僅爲了好奇,有沒有辦法直接訪問(讀或寫)變量?我從來沒有見過有人這樣做。fstream直接訪問結構體變量

aStruct * dummyStruct = 0; 
int num = 7; 

File.seekp(streamPosition, ios::beg); 
File.seekp((unsigned long long)&(dummyStruct->aVariable), ios::cur); 

File.write(reinterpret_cast<const char*>(&num), sizeof(num)); 

有沒有人做過這樣的事情?

+0

我會推薦使用['offsetof'](http://en.cppreference.com/w/cpp/types/offsetof)代替'seekp'調用,但它肯定是可行的。如果你只想寫這個單一的變量(並且變量與結構中的變量完全相同),那麼我認爲這沒有問題。 –

回答

0

您可以使用offsetof來確定變量的偏移位置。

File.seekp(offsetof(aStruct, aVariable), ios::cur); 
+0

和指針?它看起來爲我做了一個空指針並獲取它的一個子指針。它當然有用。 – Granini

+0

對不起,我想你是分配一個空指針值。所有你需要改變的是這個搜索行然後讀入'num'中。 –