我想要二進制序列化向量的數據。在下面的示例中,我將序列化爲一個字符串,然後反序列化爲一個向量,但不會獲得我開始使用的相同數據。爲什麼會這樣?向量序列化
vector<size_t> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
string s((char*)(&v[0]), 3 * sizeof(size_t));
vector<size_t> w(3);
strncpy((char*)(&w[0]), s.c_str(), 3 * sizeof(size_t));
for (size_t i = 0; i < w.size(); ++i) {
cout << w[i] << endl;
}
我希望得到的輸出
1
2
3
而是得到輸出
1
0
0
(上gcc-4.5.1)
@Mark:我不認爲是這樣。 – 2012-07-05 23:28:24