Как вставить в середину stringstream во время сериализации?
std::ostringstream oss;
boost::archive::text_oarchive oa(oss);
Я добавляю переменное количество контента к этому oa, вот так
oa & int1;
oa &int2;
--------------------> insert number of matrices here
oa & matrix1;
..//do some processing
oa & matrix2;
...//do some more
....
oa & matrixn;
ссылка на матрицу - http://robot.kaist.ac.kr/haptics/chai3d-2.0.0_Doc/resources/html/structc_matrix3d.html
Теперь в конце, когда я закончу, я хочу вставить количество матриц, которые я добавил в этот архив, прежде чем я начал добавлять матрицы перед отправкой UDP. Но я также знаю, сколько матриц я добавил после того, как добавил их в поток
Как мне это сделать?
1 ответ
Вы не можете сделать
oa & matrix1.
Для этого матрица должна быть простого типа (а это не так) или реализовывать функцию сериализации. Вы можете переопределить матрицу, реализовать сериализацию и затем использовать это.
Это хорошая ссылка: http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/tutorial.html
Вы можете начать с oss << (int)0; затем, после того, как вы запишите все, ищите обратно в начало и перепишите первые 4 байта с количеством добавленных вами элементов.