gpt4 book ai didi

c++ - 如何将带有特殊字符的QString转换成字节流通过Linux管道发送

转载 作者:行者123 更新时间:2023-12-05 06:56:59 25 4
gpt4 key购买 nike

我有一个包含以 UTF-8 编码的特殊字符 (µ) 的 QString:

QString data = "197,45 \xc2\xb5m";

我需要通过 Linux 管道将该字符串发送到另一个程序。我试图将字符串转换成这样的东西:

char msg[15];    
for(int i = 0; i < data.length(); i++) {
msg[i] = data.toUtf8()[i];
}
msg[data.length()] = '\0';

我将 msg 发送到管道,但我只收到“197,45 µ”,而不是“197,45 µm”。我尝试读取读取端的数据:

char data[15];
read(fd, data, nbytes);

我不太了解字符/字符串转换,所以如果您能解释我应该如何处理这个问题,我将很高兴。谢谢。

最佳答案

您所做的似乎主要是将数据“序列化”到二进制管道中,因此一个有意义的选项是使用专为此目的设计的 QDataStream

类似于:

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

QString data = "197,45 \xc2\xb5m";
stream << data;

sendToPipe(buffer.constData(), buffer.size());

另一边也类似,使用operator>>从流中读取数据。

QByteArray buffer(dataPtr, size);
QDataStream stream(buffer);

QString data;
stream >> data;

关于c++ - 如何将带有特殊字符的QString转换成字节流通过Linux管道发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64987745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com