Russian Qt Forum

Qt => Общие вопросы => Тема начата: oakhead от Декабрь 16, 2005, 09:38



Название: char* из QChar*
Отправлено: oakhead от Декабрь 16, 2005, 09:38
Доброго времени суток!
Есть проблемка : в окошке запршиваются значения переменных host, user, database,passwrd. Все - типа QString*. Из всего этого формируется строка для вызова pgconnect(char *conninfo)
QString *qconn = "host="+host, etc.
Можно ли как-то из qconn получить значение типа char* ?


Название: char* из QChar*
Отправлено: alexis от Декабрь 16, 2005, 10:01
qconn->ascii()


Название: char* из QChar*
Отправлено: Dendy от Декабрь 16, 2005, 10:40
Никаких указателей на QString! Класс шаровьlй, данньlе скрьlтьl!

Qt3
Код:
char * ascii = str.ascii();


Qt4
Код:
QByteArray ascii = str.toAscii();

или
Код:
QByteArray ascii = str.toLocal8Bit();


А вообще - читать доку чё конкретно нужно.


Название: char* из QChar*
Отправлено: Hellenna от Декабрь 16, 2005, 11:15
всегда делаю так:
const char* string=str.local8Bit();


Название: char* из QChar*
Отправлено: Dendy от Декабрь 16, 2005, 12:27
Отвлечёмси... В Qt3 реализован плохой стиль работьl с ascii-строками. Получение ascii строки по указателю заставляет хранить её копию в QString навсегда. Согласен с разработчиками Qt4: QByteArray ascii = string.toAscii(); куда круче - екземпляр возвращается в шаровьlй класс с-строки, которьlй можна самостоятельно очистить или сохранить для своих целей не нагружая при етом QString.

P.S. Не вздумайте писать такое:

Код:
char * ascii = str.toAscii().data();


Название: char* из QChar*
Отправлено: Вудруф от Декабрь 16, 2005, 13:40
Ну можно ещё так:
std::string stdStr =  string.toStdString();
char *ptr = stdStr.c_str();


:)