将QString转换为const void*



我正在用Qt5开发一个在mac上发送短信的软件。我使用UMTS Stick和库"unistd.h"来写入文件描述符。问题是我不知道如何使用函数"ssize_t-write(int fd,const void*buf,size_t count)"。在Qt5中,我有一个QTextEdit,我想将里面的文本作为参数传递给函数write

我没有得到以下代码的错误,但它不起作用。有错吗?

QString smsText = ui->smsTextField->toPlainText();
std::string utf8_text = smsText.toUtf8().constData();
const void * a = utf8_text.c_str();
write(fd, &a, sizeof(a));

有两个相关的问题。您使用&asizeof(a)作为参数。这基本上意味着您正在将存储在指针a中的地址写入流中。

相反,您应该在该地址传递数据,其大小由字符串的长度给定:

write(fd, a, utf8_text.size());

尝试:

write(fd, utf8_text.c_str(), utf8_text.size()); 

&a包含void指针的地址。此外,当a是指针时,sizeof(a)将始终返回相同的长度(可能是4或8个字节,具体取决于您的体系结构)。

相关内容

  • 没有找到相关文章

最新更新