问题标签 [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.

0 投票
2 回答
1374 浏览

c++ - 数据流 Qt 到标准 c++ 代码

我创建了函数 Qt 来读取二进制文件,它可以工作。

[代码]

所以基本上我可以读取二进制文件,使用不同大小的变量来访问文件中的值(因为我知道文件结构的格式)

我的问题是,现在我需要创建与标准 c++ 函数相同或相似的功能。

是否有类似 Qt for C++ 的 DataStream 或者我必须手动将文件加载到缓冲区中,然后读取单个字节,进行按位操作以获得正确的表示长度,然后再显示值或者是否有更简单的方法......

前进的方向是什么...

0 投票
3 回答
3451 浏览

c++ - 保存和加载 QList归档

我有一个 ContactData 类和一个持有 QList 的 FriendList 类,并且我重载了 << / >> 运算符。


联系人数据.h

联系人数据.cpp


好友列表.h

好友列表.cpp


保存功能

加载函数


它确实将文件保存在所需的方向,但不幸的是,加载给了我一个大小为 0 的空列表。这就是我卡住的地方..

任何人都可以帮忙吗?

0 投票
1 回答
2021 浏览

qt - 如何序列化自定义对象

我在尝试在磁盘上序列化我的对象时遇到问题。这是一个简化的场景:

我有 ObjectA 提供自己的序列化运算符。它们可以工作,因为我可以将数据保存/加载到文件中。接下来我有 ObjectB 包含 ObjectA 作为数据成员。尝试保存 ObjectB 时出现运行时错误:

QVariant::save: 无法保存类型 279。

我将此代码用于流操作符:

(只需将 A 替换为 B 用于 ObjectB 运算符)

我认为错误出在 ObjectB 序列化实现中,但我不知道如何进行。

0 投票
3 回答
12121 浏览

c++ - 将 QByteArray 附加到 QDataStream?

我必须QByteArray用不同的数据填充 a 。所以我正在使用QDataStream.

但是,我还想将 QByteArray 附加到buffer.

我错过了什么?

0 投票
2 回答
5487 浏览

c++ - Qt - 带有重载运算符的 QDataStream<< 用于对象指针(类 *)

我正在尝试使用 QDataStream 读/写我的自定义类。我已经覆盖了 << 和 >> 运算符,它们似乎对普通对象工作正常。但是,当我尝试将指针传递给我的自定义对象时,被覆盖的运算符无法正常工作。

以下是card.h中的相关数据:

这是card.cpp:

如您所见,我都尝试过

如果我使用“Card *c”,数据写得很好,但是当我尝试读取时我得到一个 SEGFAULT。如果我使用“Card *&c”,程序甚至不会识别出我已经覆盖了操作符,所以它不会被调用。

我究竟做错了什么?

编辑:

当我读取或写入“卡片”时出现问题,这是在deck.h中定义的QHash

甲板.h:

甲板.cpp:

因为卡片作为指针存储在 QHash 中,所以我不确定我应该如何绕过指针运算符。有没有更好的方法来读/写 QHash 或存储在 QHash 中的 *Card?

编辑:

根据 Marek R 的回答,我寻找了一种避免写卡片的方法*。解决方案是遍历 QHash 并保存每张卡片。

0 投票
1 回答
131 浏览

qt - 如何以mp3格式保存数据流?

我正在通过网络接收数据包中的 mp3 文件,并希望将它们以 mp3 格式保存在我的计算机上。我正在用 C++ 编程并使用 Qt Creator 作为 IDE。

更具体地说,我将接收到的数据存储在 QDataStream 对象中,该对象会自动写入它所连接的文件...我需要任何编码还是应该将文件命名为 MyMusic.mp3 就是这样?

提前致谢

0 投票
1 回答
2296 浏览

qt - Qt QTcpSocket 流式传输

我的应用程序通过QTcpSocket.

客户:

服务器:

问题是没有任何反应,但调试控制台告诉我:

...但是该QDataStream对象不允许我设置打开模式!:( 怎么了?

0 投票
2 回答
855 浏览

qt - 无法读取 QList从一个文件

我对流运算符>>有疑问。我正在尝试将自定义对象的 QList 保存并加载到文件中。保存例程似乎工作正常,但读取文件会导致崩溃。我准备了一个非常简单的例子。首先是自定义类:

我以这种方式实现了流运算符:

这是save()函数(m_objectsListQList<CustomObject*>

这是read()常规:

应用程序在 operator>> 中 for 循环的条件语句处出现段错误:

item不可访问。

你能解释一下错误在哪里吗?

很感谢。

0 投票
1 回答
2184 浏览

c++ - QDataStream 序列化指针

我正在实现一个小接口Qt。在我目前正在处理的步骤中,我有分数(自定义类)我可以在只能容纳一个分数的码头(再次,自定义类)上移动。

我用这个例子启发了自己(很多):冰箱磁铁
在这种配置中,被拖动对象的信息通过QByteArray存储在 mime 数据中,通过 序列化QDataStream

我想要一个乐谱,当放在一个被占用的码头上时,使“驻留”乐谱进入他原来的空间。我想我可以通过拥有一个包含其原始 Dock 的地址的属性来做到这一点,但我无法将此指针存储在数据流中。

以下是我的部分代码:

我无法为QDataStream和 Dock * 重载 << 和 >> 运算符,因为我发现使用指针执行此操作的唯一方法是存储实际数据。但问题是我不想要数据,我只需要指针!

我有一个想法,即使这意味着我必须重新考虑这样做的方式,我很乐意听到。谢谢!

0 投票
1 回答
1295 浏览

c++ - “plain/text” encodedData 和 QDataStream 到可读的 QString

我想将以下代码段转换为使用“纯/文本”mimetype,而不依赖于 QTextStream

我试图从二进制数据流中应用 Qt 解析字符串中未定义大小的内容

http://www.qtcentre.org/threads/696-QDataStream-reading-into-QString

但我总是得到一个空字符串或 0。我读到“使用 QDataStream(通过 QTextStream)的唯一缺点是生成的文件是二进制文件(即人类不可读)。” 有没有办法将纯文本的 QDataStream 转换为可读的 QString?

类似于 来自 QDataStream 的 QT QString, 但我想通过循环和 << 运算符(间接方法)从流中读取二进制数据。

http://qt-project.org/doc/qt-5/qdatastream.html#details上的文档


添加在

// 从应用程序外部拖放纯文本是“abcdefg”

假设我在 while 循环之前编写了以下代码:

这相当于

并且while循环崩溃:
错误:0x5dd02907处的异常,代码:0xc0000005:读取访问冲突:0x0,标志= 0x0(第一次机会)

我的纯文本字符串在开头似乎没有长度字节。我可以按原样运行它,但我想知道是否可以提前确定字符串的长度。每当我尝试通过 << 运算符从流中读取数据时,我都不能简单地将其重置为开头。