QString to char or *char |
Здравствуйте, гость ( Вход | Регистрация )
QString to char or *char |
greh |
6.3.2010, 17:37
Сообщение
#1
|
Студент Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток. Помогите решить проблему.
Гугл помог не до конца: CODE QString test="501"; char* value=new char[100]; char* sometext=test.toAscii().data(); value=sometext; ui->label->setText(QString(value)); в label записывается 0. |
|
|
Litkevich Yuriy |
6.3.2010, 19:05
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
что-то я до конца не понял, в чём собственно вопрос.
Как преобразовать QString в char или же наоборот. |
|
|
greh |
6.3.2010, 19:13
Сообщение
#3
|
Студент Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 0 раз(а) Репутация: 0 |
Qstring в char
|
|
|
Litkevich Yuriy |
6.3.2010, 19:57
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Хм, повторил код, результат для меня не ожиданный. Изменил его так:
Было:
стало: всё стало путём.Надо будет об этом подумать, но потом:) |
|
|
greh |
6.3.2010, 20:54
Сообщение
#5
|
Студент Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
BRE |
6.3.2010, 22:52
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
AD |
6.3.2010, 23:55
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Точно также как с следующим кодом:
Вот так вот. |
|
|
Гость_nixm_* |
8.3.2010, 18:21
Сообщение
#8
|
Гости |
Хм, повторил код, результат для меня не ожиданный. Изменил его так: Было:
стало: всё стало путём.Надо будет об этом подумать, но потом:) Лучьше
Так кодировка символов сохраниться |
|
|
SABROG |
8.3.2010, 20:06
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Анна |
24.3.2010, 17:31
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Забавно, я сплош и рядом пользуюсь test.toAscii().data(), если мне надо передать внутрь функции char*.
Только я сразу передаю, без лишних присвоений. Видимо, вот что происходит: test.toAscii() создает временный массив QBaytArray и набивает его буковками, тот возвращает указатель на свои данные data(), а, когда отработало sometext=test.toAscii().data(); массив QBaytArray, перестает существовать. Следовательно и указатель на данные из этого массива портится. QByteArray ar = test.toByteArray(); Делает копию QBaytArray и она уже никуда не девается и указатель на char* верен, пока не вышли за пределы существования массива. Тролли часто предупреждают о подобных граблях. Читайте не только описания функций, но и статьи про устройство самих классов.
А меня вот это удивило. Это же потеря памяти! Или я по весне ничего не понимаю уже? Сообщение отредактировал Анна - 24.3.2010, 17:56 |
|
|
Текстовая версия | Сейчас: 19.12.2024, 22:41 |