Используйте методы QString toAscii / toLatin1 / toUtf8, чтобы получить массив простых символов (QByteArray). Какой метод вам нужен, зависит от того, в какой кодировке вы хотите использовать символьные данные. Для других кодировок смотрите QTextCodec. Из QByteArray вы можете получить const char *, используя QByteArray :: constData () или char *, используя QByteArray :: data (). Всегда используйте constData (), так как data () часто создает копию, которая не нужна, если вам не нужно изменять данные с помощью char *.
Также обратите внимание, что const char * data = str.toUtf8 (). ConstData () может работать, но опасно, так как временный QByteArray, созданный в toUtf8 (), уничтожается сразу после окончания оператора. Поскольку char *, возвращаемый из constData (), становится недействительным при уничтожении байтового массива, вы должны хранить байтовый массив во временной переменной, например:
const QByteArray ba = str.toUtf8(); // or toAscii, toLatin1, depending on the encoding you want
const char* data = ba.constData();