Russian Qt Forum

Qt => Общие вопросы => Тема начата: BuRn от Октябрь 25, 2014, 17:57



Название: QString std::string
Отправлено: BuRn от Октябрь 25, 2014, 17:57
Мне кажется , или оно конвертит немного не так. Суть:
Код:
std::string serializeData;
    requestDate.SerializeToString(&serializeData);
    QString b(serializeData.c_str());
    selector::DataUserSelector qweqwe;
    std::string serializeData1 = b.toStdString();
    qweqwe.ParseFromString(serializeData1);
    qweqwe.PrintDebugString();
Используется протобаф гугла, так вот, если загрузить qweqe из исходной строки, которую он заполнил в SerializeToString, то загружает ок, а вот если сделать через QString, то уже не загружает. Пока копаться в коде, который сгенерировал их protobuf не стал, но очевидно что они !=


Название: Re: QString std::string
Отправлено: BuRn от Октябрь 25, 2014, 21:02
Проблему частично порешал, QString::fromStdString(serializeData);. Для QString-ов помогло, но засада остается с QByteArray, при конвертации туда и обратно. От QByteArray не избавится никак, эти данные нужно писать в сокет


Название: Re: QString std::string
Отправлено: vulko от Октябрь 27, 2014, 10:50
Зачем избавляться от QByteArray?

QByteArray это обертка вокруг char*. Записать в него c-string можно с помощью QDataStream.writeRawData(char*, len) например.

В чем собственно проблема?


Название: Re: QString std::string
Отправлено: BuRn от Ноябрь 09, 2014, 11:44
Зачем избавляться от QByteArray?

QByteArray это обертка вокруг char*. Записать в него c-string можно с помощью QDataStream.writeRawData(char*, len) например.

В чем собственно проблема?
проблема была в 0x00,указание размера, решило проблему