Покажите как?
Напр чтение паскалевских строк неплохо оформить так
C++ (Qt)
typedef unsigned char uchar;
template <uchar N>
struct TStr {
friend QDataStream & operator >> ( QDataStream & strm, TStr & dst )
{
strm.readRawData((char *) dst.mData, N);
Q_ASSERT(dst.mData[0] <= N);
dst.mData[dst.mData[0]] = 0;
return strm;
}
// data
uchar mData[N + 2];
};
Уже для 2 строк есть смысл, а будет их больше - тем более. Кстати только сейчас заметил - длина-то unsigned. В итоге чтение всей структуры должно выглядеть так
C++ (Qt)
QDataStream & operator >> ( QDataStream & strm, TData & dst )
{
strm >> dst.id >> dst.comment >> ...
return strm;
}
Большинство операторов >> уже есть для QDataStream. Не проверял, но вероятно и сериализация QVector "совместима" с записанным массивом, но даже если и нет - это прекрасно ляжет под template. В итоге чтение сводится к приятному
C++ (Qt)
QVector<TData> vec;
strm >> vec;