Qt QDataStream 读取数据错误:'invalid argument type' 解决方法

问题描述:

在使用 Qt 的 QDataStream 读取数据时,可能遇到以下错误:

G:\Qt\Client\Smarthome_Client\procession.cpp:102: error: invalid argument type 'QDataStream' to unary expression

错误通常出现在以下代码行:

if (!(in >> suggestion)) {

错误原因:

这个错误是因为 QDataStream 并不支持直接使用 >> 运算符从字节数组中读取数据。

解决方法:

为了解决这个问题,可以使用 QDataStream>> 运算符的重载版本来读取数据。

QByteArray data = m_socket->readAll();
if (data.isEmpty()) {
    ui->message->append('读取的数据为空');
    return;
}
// 解析服务器返回的数据
QDataStream in(&data, QIODevice::ReadOnly);
in >> suggestion; // 使用重载的 >> 运算符来读取数据
if (in.status() != QDataStream::Ok) {
    ui->message->append('解析服务器返回的数据失败');
    return;
}
ui->message->append(suggestion);
m_socket->close();

代码修改说明:

  1. 使用 in.status() != QDataStream::Ok 来检查数据读取是否成功。

总结:

通过使用 QDataStream 的重载的 >> 运算符,并检查数据读取状态,可以正确地读取和解析服务器返回的数据,避免 invalid argument type 错误。

Qt QDataStream 读取数据错误:'invalid argument type' 解决方法

原文地址: https://www.cveoy.top/t/topic/qh6A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录