Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Февраль 18, 2011, 14:22



Название: Конвертер из QSting в char[]
Отправлено: ruzik от Февраль 18, 2011, 14:22
Здравствуйте, а не подскажите есть ли прямой конвертер из QString в массив char
Конечно можно из QString перевести в QByteArray а потом посимвольно переписать, но все же это не очень удобно, есть ли какой-нибудь прямой конвертер


Название: Re: Конвертер из QSting в char[]
Отправлено: GreatSnake от Февраль 18, 2011, 14:23
QString::toLocal8Bit().constData()


Название: Re: Конвертер из QSting в char[]
Отправлено: ruzik от Февраль 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 ???


Название: Re: Конвертер из QSting в char[]
Отправлено: Пантер от Февраль 18, 2011, 14:59
const char *c = str->toLocal8Bit().constData();


Название: Re: Конвертер из QSting в char[]
Отправлено: GreatSnake от Февраль 18, 2011, 15:05
2 ruzik:
Я вас откровенно не понимаю. Ну нельзя же так примитивно подходить к решению своих проблем.
Ну, не компилится, дык посмотрите в ассистенте описание подсказанных вам функций. Что за сложности?
Что, лень не позволяет ??? Просто таким поведением в форуме, вы себя опускаете ниже плинтуса, имхо.


Название: Re: Конвертер из QSting в char[]
Отправлено: Пантер от Февраль 18, 2011, 15:11
+1
И подтяни знания по с++.


Название: Re: Конвертер из QSting в char[]
Отправлено: BRE от Февраль 18, 2011, 15:45
const char *c = str->toLocal8Bit().constData();
Пантер, а куда будет указывать этот указатель c после этой конструкции.
На уже разрушнный буфер?  ;)


Название: Re: Конвертер из QSting в char[]
Отправлено: Пантер от Февраль 18, 2011, 15:47
Я просто показал как избавиться от выдачи ошибки. ;)


Название: Re: Конвертер из QSting в char[]
Отправлено: GreatSnake от Февраль 18, 2011, 15:49
Мде, мой пример для таких знатоков С++ может быть фатальным ;)


Название: Re: Конвертер из QSting в char[]
Отправлено: BRE от Февраль 18, 2011, 15:54
Ну так раздел какой? В этом разделе нужно подробно и чОтко.  :)

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

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

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

Еще посмотри на QTextCodec, поможт преобразовывать к строке в нужной кодировке.


Название: Re: Конвертер из QSting в char[]
Отправлено: Пантер от Февраль 18, 2011, 15:57
Тогда уже
Код
C++ (Qt)
const QByteArray buf = str.toLocal8Bit();
 


Название: Re: Конвертер из QSting в char[]
Отправлено: pastor от Февраль 18, 2011, 15:57
а куда будет указывать этот указатель c после этой конструкции.
На уже разрушнный буфер?  ;)

+1