LINUX.ORG.RU

Ещё пара вопросов по qt4


0

0

Не понимаю как QString привести к нормальным сишным типам

QString str = "Text of string";
char * str1 = str.toAscii();
char str2[] = str.toAscii();
const char * str3 = str.toAscii();

Ниодно присваивание кроме QString str = «Text of string»; не работает.



Последнее исправление: kin63camapa (всего исправлений: 1)

str.toUtf8().data()

только почитай хелп на QByteArray::data() перед этим.

k0l0b0k ★★
()

Это вообще-то дурной тон - присваивать указателям значения, ссылающиеся на внутренние данные.

anonymous
()
Ответ на: комментарий от anonymous

Оно и не работает по той причине, что создаются временные объекты QByteArray, которые сразу после присваивания уничтожаются.

Надо хотя бы так: QByteArray ba = str.toAscii(); char* str1 = ba.data(); const char* str2 = ba.constData();

но лучше подобного избегать, зачем оно понадобилось то?

anonymous
()
Ответ на: комментарий от anonymous

понадобилось передавать в некьютишные части программы данные из полей qt (на qt у меня только гуй пишется а в самой проге ещё туева хуча сторонних либ которые ессно непонимают никакие QString_и)

kin63camapa
() автор топика
Ответ на: комментарий от kin63camapa

кто-то требует массив из char? они же небось туда записывать собираются, тогда лучше его напрямую завести конвертировать, кстати, лучше с помощью toLocal8Bit(), мало ли у кого какая кодировка

anonymous
()

.toLocal8Bit().data(), если с этой строчкой потом надо работать - то strcpy, g_strdup и так далее по вкусу.

MuZHiK-2 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.