Как вставить в середину 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. Но я также знаю, сколько матриц я добавил после того, как добавил их в поток

Как мне это сделать?

0

Решение

Вы не можете сделать

oa & matrix1.

Для этого матрица должна быть простого типа (а это не так) или реализовывать функцию сериализации.
Вы можете переопределить сериализацию матрицы и затем использовать это.

Это хороший реф: http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/tutorial.html

Вы можете начать с
ОСС << (INT) 0;
затем после того, как вы напишите все, ищите обратно в начало и перепишите первые 4 байта с количеством добавленных вами элементов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]