问题标签 [qdatastream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从 'const QVector 转换>' 到 'QVector>'
我该如何解决以下问题,即转换const QVector<QVector<qreal>>
为QVector<QVector<qreal>>
?
我尝试了几个步骤但没有帮助:
abc.points 是 type 的结构元素QVector<QVector<qreal>>
,我试图从 a 中提取QDataStream
:
c++ - 如何知道 QDataStream 不能反序列化某些东西?
请考虑QDataStream
文档中的以下代码片段:
有没有办法知道QDataStream
不能将文件的内容反序列化为QString
以及qint32
如何处理此类反序列化错误QDatastream
?
c++ - Qt序列化不匹配运算符<<操作数类型是'QDataStream'
我在使用简单的托管结构进行序列化时遇到问题。
我的班级标题
和源cpp
当我尝试编译这个时,我得到这个错误:
错误:'operator<<' 不匹配(操作数类型为 'QDataStream' 和 'const MappySaver::Tile')
我使用这个类来序列化一个列表。在主窗体上,我有一个具有相同数据的小部件。
我使用这种方法尝试序列化。
如何解决此问题并进行序列化?
c++ - QDataStream 将错误的值写入 QByteArray
我正在 Qt 中编写一个简单的基于 TCP 的网络应用程序,并希望使用QDataStream
并QByteArray
通过网络发送数据。问题是当我将数据放入时QByteArray
,它们被“归零”。例如(MainWindow
连接到定时器超时信号的插槽):
我一开始收到"hello"
一次,但之后我只收到""
。也是如此qint32
。客户端和服务器都显示QByteArray
大小为 14 字节,因此QDataStream
将数据写入该数组,但它会生成它们0
(""
当我使用s >> h
然后使用时显示qDebug() << h
)
c++ - (反)序列化枚举类
我正在尝试序列化和反序列化(使用QDataStream
但在这里无关紧要)一个enum class
变量:
序列化很简单:
但反序列化不是:
显然,static_cast
不允许enum class
引用对其基础类型的引用。此外,“明显”的解决方案:
根据这个问题的答案,实际上可能是非法的并且没有由标准定义,因为等效的表达式return stream >> (*static_cast<char *>(static_cast<void *>(&type)));
在那里被声明为非法(或者更确切地说不是由标准定义)。如果是这种情况,我需要这样做:
这不是很漂亮,是 4 行而不是 1 行等等。对于这样一个(看似)简单的事情,对我来说似乎非常不必要。
我的问题:当将对变量的引用转换为其基础类型的引用时,通过reinterpret_cast
或等价的方式是否真的非法(标准未定义) ?static_cast
void*
enum class
qt - 从 ipc fifo 文件描述符读取缓冲区时未初始化 QDataStream
我想使用fifo(ipc)在两个应用程序之间进行通信,我通过“mkfifo MyPipe”命令创建了一个fifo。
第一个应用程序:
第二个应用程序:
……
读取 ipc fifo 后,“rxbuf”已完全初始化,但“myclassObjrd.lname”和“myclassObjrd.fname”均为空且未初始化。
qt - QDataStream 无法正常工作并在重用时返回错误
我在 QDataStream 中存储一些数据并立即获取数据
它适用于一次使用,但是当我重用此功能时,我得到错误分段错误。提前致谢。
c++ - 如何在 Qt5 中将二进制数据写入标准输出
QTextStream
允许我进行包装stdout
,以便我可以使用 Qt spesifics 方便地写入标准输出。例子:
然而,虽然QTextStream
非常有用,但它不支持二进制数据。通过它的所有数据都应遵循有效的字符集和编码(unicode/UTF-8 等)。
因此,如果我想将原始二进制数据输出到,逻辑替换stdout
是替换QTextStream
为QDataStream
. 但是,该类不允许我包装stdout
(它没有采用 std 文件句柄的构造函数)。
那么在将二进制数据写入时,我有哪些选择来获得“Qt 便利” stdout
?下一个最好的事情是什么?
PS:我知道将二进制数据写入标准输出并不总是好主意。但是,我真的需要这样做。
c++ - 调用 QDataStream::writeRawData 后 QDataStream 为空
我有一个相当奇怪的问题,使用QDataStream
,或者至少对我来说很奇怪,因为我根本不理解这种行为。
当然,我的问题来自一个大项目,但我设法通过一个最小的示例重现了这种奇怪的行为,我现在将对其进行描述。
我有两节课
- 二进制数据读取器
Reader
和 - 二进制数据解析器
Parser
。
通过Reader
a 读取数据QTcpSocket
,将每个接收到的数据块打包到 aQByteArray
中,并通过 Qt 信号将该数组发送到Parser
.
将Parser
所有接收到的数据块写入自己的数据块,QDataStream
然后解析来自该流的数据包。
当Parser
将接收QByteArray
到的数据写入其QDataStream
. 的返回值QDataStream::writeRawData
正确返回写入的字节数,但随后QDataStream::atEnd
返回true
并QDataStream::device.bytesAvailable
返回零。
为什么?声称已写入的数据在哪里?QDataStream::writeRawData
你可以在这篇文章的和中找到代码。
环境: Windows 7 Enterprise SP1 64 位上的 Qt 5.9.1(MSVC 2015,32/64 位)
阅读器.h
阅读器.cpp
解析器.h
解析器.cpp
主文件
delete.pro 是的,我将我的最小示例项目称为“删除”:“D