Название: QDataStream. Как лучше сделать. Отправлено: levcom от Июль 23, 2012, 12:43 Разрабатываю реализацию протокола на Qt. Для более простого использования библиотеки применяю по возможности "родные" Qt-типы (qint16, qint32, QDataStream). Однако строчные значения (string) по спецификации протокола сериализуются в бинарный вид отлично от того как это реализовано в QtCore (QString). То при чтении из потока хочется получить QString и использовать стандартные операторы >> <<. Как выйти с наименьшими жертвами - т.е. читать из QDataStream.
Название: Re: QDataStream. Как лучше сделать. Отправлено: Akon от Июль 23, 2012, 13:48 Сделать класс QStringHolder для нужной вам сериализации строки в QDataStream.
Название: Re: QDataStream. Как лучше сделать. Отправлено: levcom от Июль 23, 2012, 15:24 Сделать класс QStringHolder для нужной вам сериализации строки в QDataStream. Приведите хотя бы элементарный пример. Я так понимаю, Вы предлагаете наследовать QStringHolder : public QString и перегрузить соответствующие operator >> << в QDataStream? Название: Re: QDataStream. Как лучше сделать. Отправлено: Akon от Июль 23, 2012, 15:39 Нет, я категорически против наследования в данном случае. QStringHolder просто держит QString, как, например, смарт-поинтер держит указатель. Просто для QStringHolder можно будет сделать перегрузку глобальных операторов <<, >> c нужным форматом.
Название: Re: QDataStream. Как лучше сделать. Отправлено: levcom от Июль 25, 2012, 16:16 Нет, я категорически против наследования в данном случае. QStringHolder просто держит QString, как, например, смарт-поинтер держит указатель. Просто для QStringHolder можно будет сделать перегрузку глобальных операторов <<, >> c нужным форматом. Код: class QStringHolder т.е. если мне надо считать в securityPolicyUri. QStringHolder st; QString policyUri; QDataStream stream; stream >> st; policyUri = st.str; как-то не очень удобно. |