我正在尝试对向量的数据进行二进制序列化。在下面的这个示例中,我序列化为一个字符串,然后反序列化回一个向量,但没有得到与我开始时相同的数据。为什么会这样?
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上)