Я разрабатываю программное обеспечение с Qt5 для отправки sms на моем mac. Я использую UMTS Stick и библиотеку "unistd.h"
для записи в дескриптор файла. Проблема в том, что я не знаю, как использовать функцию "ssize_t write(int fd, const void *buf, size_t count)". В Qt5 у меня есть QTextEdit
, и я хотел бы передать текст внутри как параметр функции write
.Преобразование QString в const void *
У меня нет ошибок со следующим кодом, но он не работает. Есть ли ошибка?
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 *' _literally_ может быть любым. Вы можете передать Unicode в любой кодировке, и он с радостью примет его. То, что делает читаемое SMS, - это просто удача. – MSalters
Каков тип дескриптора файла? В зависимости от его типа вы можете или не можете использовать класс QT для доступа к тем же функциям. – fjardon