c++ - 将 QString 转换为 const void*

标签 c++ parameter-passing qt5 qstring

我正在用 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());

关于c++ - 将 QString 转换为 const void*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33753161/

相关文章:

opengl-es - Qt Enterprise for IMX6 不使用硬件加速?

变体的 C++ boost::spirit::karma 规则

python - 参数 : passed by reference vs passed by name

powershell - 从PowerShell脚本设置Octopus参数

Java: '.class' 将数组传递给函数时出现预期错误

c++ - 在 Qt 饼图中显示百分比?

c++ - QTreeWidgetItem 多选使用键盘

c++ - 枚举引用参数传输而不是 int 引用参数

c++ - .crt 部分?这个警告是什么意思?

c++ - 实现 Resize 函数的哈希表