C++ 序列化 std::vectorcv::Vec6f 对象为二进制,并用 QTsocket 发送
时间: 2023-08-18 19:04:21 浏览: 167
要将 std::vector<cv::Vec6f> 对象序列化为二进制并使用 Qt 的 QTcpSocket 发送,你可以使用 Qt 的 QDataStream 类和 QByteArray 类来实现。
首先,将 std::vector<cv::Vec6f> 对象序列化为 QByteArray 对象:
```cpp
std::vector<cv::Vec6f> vec; // 假设这是你的 std::vector<cv::Vec6f> 对象
QByteArray byteArray;
QDataStream stream(&byteArray, QIODevice::WriteOnly);
stream << quint32(vec.size()); // 先写入向量的大小
for (const cv::Vec6f& element : vec) {
for (int i = 0; i < 6; ++i) {
stream << element[i]; // 逐个写入向量的元素
}
}
```
接下来,使用 QTcpSocket 发送该 QByteArray 对象:
```cpp
QTcpSocket socket; // 假设这是你的 QTcpSocket 对象
socket.connectToHost("127.0.0.1", 1234); // 连接到目标主机和端口
if (socket.waitForConnected()) {
socket.write(byteArray); // 发送 QByteArray 对象
socket.flush(); // 清空缓冲区
socket.waitForBytesWritten(); // 等待写入完成
}
```
这样,你就可以将 std::vector<cv::Vec6f> 对象序列化为二进制,并使用 QTcpSocket 发送出去了。当然,你需要根据自己的实际情况修改代码,比如替换目标主机和端口,以及根据需要添加错误处理和验证等。
阅读全文