![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
greh |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 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 |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
что-то я до конца не понял, в чём собственно вопрос.
Как преобразовать QString в char или же наоборот. |
|
|
greh |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Qstring в char
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Хм, повторил код, результат для меня не ожиданный. Изменил его так:
Было:
стало: всё стало путём.Надо будет об этом подумать, но потом:) |
|
|
greh |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 23.11.2009 Пользователь №: 1252 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
BRE |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Точно также как с следующим кодом:
Вот так вот. |
|
|
Гость_nixm_* |
![]()
Сообщение
#8
|
Гости ![]() |
Хм, повторил код, результат для меня не ожиданный. Изменил его так: Было:
стало: всё стало путём.Надо будет об этом подумать, но потом:) Лучьше
Так кодировка символов сохраниться |
|
|
SABROG |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Анна |
![]()
Сообщение
#10
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
Забавно, я сплош и рядом пользуюсь test.toAscii().data(), если мне надо передать внутрь функции char*.
Только я сразу передаю, без лишних присвоений. Видимо, вот что происходит: test.toAscii() создает временный массив QBaytArray и набивает его буковками, тот возвращает указатель на свои данные data(), а, когда отработало sometext=test.toAscii().data(); массив QBaytArray, перестает существовать. Следовательно и указатель на данные из этого массива портится. QByteArray ar = test.toByteArray(); Делает копию QBaytArray и она уже никуда не девается и указатель на char* верен, пока не вышли за пределы существования массива. Тролли часто предупреждают о подобных граблях. Читайте не только описания функций, но и статьи про устройство самих классов.
А меня вот это удивило. Это же потеря памяти! Или я по весне ничего не понимаю уже? Сообщение отредактировал Анна - 24.3.2010, 17:56 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.4.2025, 3:38 |