Russian Qt Forum
Ноябрь 23, 2024, 06:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Конвертер из QSting в char[]  (Прочитано 9669 раз)
ruzik
Гость
« : Февраль 18, 2011, 14:22 »

Здравствуйте, а не подскажите есть ли прямой конвертер из QString в массив char
Конечно можно из QString перевести в QByteArray а потом посимвольно переписать, но все же это не очень удобно, есть ли какой-нибудь прямой конвертер
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 18, 2011, 14:23 »

QString::toLocal8Bit().constData()
Записан

Qt 5.11/4.8.7 (X11/Win)
ruzik
Гость
« Ответ #2 : Февраль 18, 2011, 14:57 »

А не подскажите как правильно сделать
Я пишу const char arr[]=* str->toLocal8Bit().constData();
По смыслу все правильно, но
Ошибка   1   error C2440: инициализация: невозможно преобразовать 'const char' в 'const char []'   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\Rizek calc 3\Rizek calc 3\rizekcalc3.cpp   33
Пробовал и без *
Ошибка   1   error C2440: инициализация: невозможно преобразовать 'const char *' в 'const char []'   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\Rizek calc 3\Rizek calc 3\rizekcalc3.cpp   33
Получается что компилятор считает str->toLocal8Bit().constData(); не как массив char, а как один char Непонимающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 18, 2011, 14:59 »

const char *c = str->toLocal8Bit().constData();
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Февраль 18, 2011, 15:05 »

2 ruzik:
Я вас откровенно не понимаю. Ну нельзя же так примитивно подходить к решению своих проблем.
Ну, не компилится, дык посмотрите в ассистенте описание подсказанных вам функций. Что за сложности?
Что, лень не позволяет Непонимающий Просто таким поведением в форуме, вы себя опускаете ниже плинтуса, имхо.
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Февраль 18, 2011, 15:11 »

+1
И подтяни знания по с++.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #6 : Февраль 18, 2011, 15:45 »

const char *c = str->toLocal8Bit().constData();
Пантер, а куда будет указывать этот указатель c после этой конструкции.
На уже разрушнный буфер?  Подмигивающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Февраль 18, 2011, 15:47 »

Я просто показал как избавиться от выдачи ошибки. Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Февраль 18, 2011, 15:49 »

Мде, мой пример для таких знатоков С++ может быть фатальным Подмигивающий
Записан

Qt 5.11/4.8.7 (X11/Win)
BRE
Гость
« Ответ #9 : Февраль 18, 2011, 15:54 »

Ну так раздел какой? В этом разделе нужно подробно и чОтко.  Улыбающийся

2 ruzik
Код:
// Опредлям буфер
QByteArray buf = str.toLocal8Bit();

// Берем указатель
const char *ptr = buf.constData();

// Указатель будет валиден, пока будет жив буфер buf

Еще посмотри на QTextCodec, поможт преобразовывать к строке в нужной кодировке.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Февраль 18, 2011, 15:57 »

Тогда уже
Код
C++ (Qt)
const QByteArray buf = str.toLocal8Bit();
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Февраль 18, 2011, 15:57 »

а куда будет указывать этот указатель c после этой конструкции.
На уже разрушнный буфер?  Подмигивающий

+1
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 22.