将 QString 转换为 const void*
Convert QString to 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));
有两个相关的问题。您正在使用 &a
和 sizeof(a)
作为参数。这基本上意味着您正在将指针 a
中存储的地址写入流中。
您应该将数据 传递到 该地址,其大小由字符串的长度指定:
write(fd, a, utf8_text.size());
尝试:
write(fd, utf8_text.c_str(), utf8_text.size());
&a
包含您的 void
指针的地址。此外,sizeof(a)
,当 a
是指针时,将始终 return 相同的长度(可能是 4 或 8 个字节,具体取决于您的体系结构)。
我正在用 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));
有两个相关的问题。您正在使用 &a
和 sizeof(a)
作为参数。这基本上意味着您正在将指针 a
中存储的地址写入流中。
您应该将数据 传递到 该地址,其大小由字符串的长度指定:
write(fd, a, utf8_text.size());
尝试:
write(fd, utf8_text.c_str(), utf8_text.size());
&a
包含您的 void
指针的地址。此外,sizeof(a)
,当 a
是指针时,将始终 return 相同的长度(可能是 4 或 8 个字节,具体取决于您的体系结构)。