gpt4 book ai didi

c++ - 如何在没有 Qt 的情况下反序列化 QVariant 的输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:20 24 4
gpt4 key购买 nike

如何在不使用 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);
}

最佳答案

查看源代码,可能是 src/corelib/kernel/qvariant.cpp for QDataStream& operator<<(QDataStream&, const QVariant&) .这样您就会知道在序列化过程中写入了什么。

完成后,您会看到运算符<< 调用了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 以弄清楚它们是如何序列化的。

关于c++ - 如何在没有 Qt 的情况下反序列化 QVariant 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com