Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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
|
Цитата(Litkevich Yuriy @ 6.3.2010, 21:57) Link Хм, повторил код, результат для меня не ожиданный. Изменил его так: Было: стало: всё стало путём.Надо будет об этом подумать, но потом:) Спасибо! Заработало! |
|
|
|
|
BRE |
6.3.2010, 22:52
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Litkevich Yuriy @ 6.3.2010, 19:57) Link Надо будет об этом подумать, но потом:) Все уже было обдумано на prog.org. Нельзя сохранять указатель на временный объект. |
|
|
|
|
AD |
6.3.2010, 23:55
Сообщение
#7
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Точно также как с следующим кодом:
Вот так вот. |
|
|
|
| Гость_nixm_* |
8.3.2010, 18:21
Сообщение
#8
|
|
Гости |
Цитата(Litkevich Yuriy @ 6.3.2010, 19:57) Link Хм, повторил код, результат для меня не ожиданный. Изменил его так: Было: стало: всё стало путём.Надо будет об этом подумать, но потом:) Лучьше Так кодировка символов сохраниться |
|
|
|
|
SABROG |
8.3.2010, 20:06
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Цитата(Гость_nixm_* @ 8.3.2010, 18:21) Link Лучьше У QString нет метода toByteArray. У QVariant - да, но речи о нем тут не шло. |
|
|
|
|
Анна |
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 |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.1.2026, 2:17 |