请教QDatastream与QVariant的相关问题(QT编程)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教QDatastream与QVariant的相关问题(QT编程)相关的知识,希望对你有一定的参考价值。
QVariant V("123");
QByteArray b("321");
QDataStream o(&b,QIODevice::ReadWrite);
o << V;
cout<<" b:"<<b.data()<<endl;
cout<<" V:"<<V.toByteArray().data()<<endl;
我想问下为什么b输出为空?
1、如果将cout换为二进制文件QFile(或者查看调试时的变量b值),
QFile file("file.dat");file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out<<V;
file.close();
那么会发现输出的结果是\\0 \\0 \\0 \\n \\0 \\0 \\0 \\0 6 \\0 '1' \\0 '2' \\0 '3'.
2、如果将o << V;替换为o << V.toByteArray();,那么结果为\\0 \\0 \\0 \\0 3 '1' '2' '3'.
3、如果直接将V输出到控制台上,显示结果为QVariant(QString, "123");
所以,推测为QVariant具有独特的内存结构,如果直接以QByteArray将其内存数据输出到控制台,由于内存格式仍为QVariant的内存结构,所以控制台上不能显示出来。
不过,再具体的就说不上来了,查看QVariant类定义,也没有发现为什么会有\\0 \\0 \\0 \\n等这样的数据。希望高手解答啊。
以上是关于请教QDatastream与QVariant的相关问题(QT编程)的主要内容,如果未能解决你的问题,请参考以下文章
如何将 QVariant::fromValue 与 QString 一起使用?
有没有办法将 QVariant 与 QVector 一起使用?