0
該文件以二進制模式打開,第一個變體出現異常,第二個不是。 如何使用ifstream直接讀取我的目標對象?請幫幫我。 這裏是我的代碼:如何用ifstream讀入對象成員?
class mhead {
public:
long length;
void readlong(std::ifstream *fp);
}
void mhead::readlong(std::ifstream *fp)
{
//this one is not work
fp->read((char*)this->length,sizeof(this->length));
//this is working
long other;
fp->read((char*)other,sizeof(other));
}
}
看來你是寫入到內存的任意位置。這只是運氣,你的第二個變體正在工作。嘗試fp-read(&this-> length,sizeof(length))。 – beduin 2011-04-22 10:55:18
@Alexander:這種方法似乎不是一個好主意。你必然會遇到編譯器實現相關的差異。如果您想以便攜和安全的方式進行序列化,請考慮使用[Boost.Serialization](http://boost.org/doc/libs/1_46_1/libs/serialization/doc/index.html)。 – 2011-04-22 11:04:45
@ Space_C0wb0y我的意思不是粗魯,而是將他介紹給'Boost'就像是帶走他的彈弓(這樣他就不會傷害自己),而是給他一個大炮。 – cnicutar 2011-04-22 11:08:12