Qt QDataStream 读取数据错误:'invalid argument type' 解决方法
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();
代码修改说明:
- 使用
in.status() != QDataStream::Ok来检查数据读取是否成功。
总结:
通过使用 QDataStream 的重载的 >> 运算符,并检查数据读取状态,可以正确地读取和解析服务器返回的数据,避免 invalid argument type 错误。
原文地址: https://www.cveoy.top/t/topic/qh6A 著作权归作者所有。请勿转载和采集!