【发布时间】:2015-11-17 09:21:07
【问题描述】:
我正在使用 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));
【问题讨论】:
-
您通过了 C++ 编译器检查的事实并不意味着结果是有意义的! “unistd.h”尤其是非常原始的并且不检查它的参数。
void*字面意思可以是任何东西。您可以以任何编码传递 Unicode,它会很乐意接受它。能否制作出可读的短信纯属运气。 -
你的文件描述符是什么类型的?根据其类型,您可能会也可能不会使用 QT 类来访问相同的功能。
标签: c++ parameter-passing qt5 qstring