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. Но я также знаю, сколько матриц я добавил после того, как добавил их в поток
Как мне это сделать?
Вы не можете сделать
oa & matrix1.
Для этого матрица должна быть простого типа (а это не так) или реализовывать функцию сериализации.
Вы можете переопределить сериализацию матрицы и затем использовать это.
Это хороший реф: http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/tutorial.html
Вы можете начать с
ОСС << (INT) 0;
затем после того, как вы напишите все, ищите обратно в начало и перепишите первые 4 байта с количеством добавленных вами элементов.
Других решений пока нет …