1
我使用ostream來序列化一個對象,但write()方法似乎將額外的字節寫入緩衝區。ostream.write將額外的字節寫入緩衝區
uint32_t id1=0x01;
uint32_t id2=0xdeadbeef;
std::stringstream sink;
sink.write(reinterpret_cast<char *>(&id1),sizeof(uint32_t));
print(sink); //01000000 - Correct
sink.write(reinterpret_cast<char *>(&id2),sizeof(uint32_t));
print(sink); //FFFFFFEFFFFFFFBEFFFFFFADFFFFFFDE - why?!
//print defined as follows:
static void print(std::ostream &sink){
std::stringstream sk;
sk << sink.rdbuf();
std::string ss=sk.str();
for(unsigned int i=0;i<ss.length();i++){
printf("%02X", ss.c_str()[i]);
}
}
我很困惑爲什麼那些FFFF
被寫入緩衝區。
我[還沒有](http://ideone.com/IqeGbP)重現這一點。什麼類型的「匯」?你在做什麼系統? –