векторная сериализация

Я пытаюсь двоично сериализовать данные вектора. В этом примере ниже я сериализую в строку, а затем десериализую обратно в вектор, но не получаю те же данные, с которых я начал. Почему это так?

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)

Ответы на вопрос(4)

Ваш ответ на вопрос