ベクトルのデータをバイナリシリアル化しようとしています。以下のこのサンプルでは、文字列にシリアル化してから、ベクトルに逆シリアル化しますが、最初に使用したものと同じデータを取得しません。なぜそうなのですか?
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