1

QTを使用せずに出力QVariantをstd::stringに逆シリアル化するにはどうすればよいですか。

要求により、私のプログラムはQtを含めることができませんでした。

QVariant.toString().toStdString();

例。

file.ini(QSettingで書き込む)..

ID="\x1\0\0\0\xd0\x8c\xd9\xec\xfb*"

profile_program/*擬似コード*/

int main ()
{
   void* IDQt =getIDFromIniFile("file.ini");
   std::string myId = convertID(IDQt);
   process(myID);
}
4

1 に答える 1

1

ソースを調べてください。おそらくsrc/corelib / kernel/qvariant.cppでQDataStream& operator<<(QDataStream&, const QVariant&)。そうすれば、シリアル化中に何が書き込まれるかを知ることができます。

実行すると、operator<<がQVariant:: save(QDataStream&)を呼び出すことがわかります。書かれていることは次のとおりです。

quint32 QVariant::type()
quint8 QVariant::isNull()
if type()==UserType
  QString MetaType::typeName(userType())
end
if the variant is not valid
  QString empty
else
  -- MetaType::save(...)
end

QStringとQMetaTypeにドリルダウンして、それらがどのようにシリアル化されているかを把握する必要があります。

于 2012-05-29T18:58:46.777 に答える