Russian Qt Forum

Qt => Общие вопросы => Тема начата: Trademaster от Октябрь 01, 2013, 21:05



Название: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Trademaster от Октябрь 01, 2013, 21:05
Как запихнуть значение QLineEdit(что по сути QString) в массив char ????


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Bepec от Октябрь 01, 2013, 22:02
Код:
string.toStdString().c_str();


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Alex Custov от Октябрь 01, 2013, 22:07
Вопрос - зачем? Как-то так для ASCII символов:

Код
C++ (Qt)
QString s = lineEdit->text();
char *c = reinterpret_cast<char *>(malloc(s.length() + 1));
qstrcpy(c, s.toLatin1());


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Fregloin от Октябрь 02, 2013, 09:28
еще проще использовать qPrintable(...) тогда и русские символы будут корректно преобразованы


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Trademaster от Октябрь 02, 2013, 18:44
Вопрос - зачем? Как-то так для ASCII символов:

Код
C++ (Qt)
QString s = lineEdit->text();
char *c = reinterpret_cast<char *>(malloc(s.length() + 1));
qstrcpy(c, s.toLatin1());

Зачем :)) Ну ,возможно ответ покажется смешным ,но все же. В программе будет  создаваться шифр (если это можно так назвать). Т.е ,есть массив char ,в нем 10 символов. В произвольном порядке символы будут меняться и отправляться на сервер ,сервер же будет переставлять символы назад и  получить корректную информацию (сделано будет для защиты передаваемых данных) . У сервера будет ключ для разгадки шифра ,точнее его часть ,другую часть будет передавать клиент.

p.s просьба не кидаться помидорами , впервые с подобным работаю..


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Bepec от Октябрь 02, 2013, 18:46
Ответ уже был дан :)

А ответ с malloc'ом убил меня наповал :D


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Alex Custov от Октябрь 02, 2013, 18:52
А ответ с malloc'ом убил меня наповал :D

Какой вопрос, такой ответ.


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Trademaster от Октябрь 02, 2013, 18:55
А ответ с malloc'ом убил меня наповал :D

Какой вопрос, такой ответ.

Вопрос возможно не обычный и в чем то мог показаться бессмысленным ,но по моему я нормально его изложил :(( Так что не ругайте мой вопрос ;DDD


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: kambala от Октябрь 02, 2013, 18:55
без malloc или new массивом можно пользоваться только в месте вызова qPrintable


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Alex Custov от Октябрь 02, 2013, 18:55
Вопрос возможно не обычный и в чем то мог показаться бессмысленным ,но по моему я нормально его изложил :(( Так что не ругайте мой вопрос ;DDD

Для работы с бинарными данными используй класс QByteArray


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Trademaster от Октябрь 02, 2013, 19:40
еще проще использовать qPrintable(...) тогда и русские символы будут корректно преобразованы

Можно пример использования? ) Судя по вот этому описанию :
const char * qPrintable ( const QString & str )
Returns str as a const char *. This is equivalent to str.toLocal8Bit().constData().

The char pointer will be invalid after the statement in which qPrintable() is used. This is because the array returned by toLocal8Bit() will fall out of scope.
----------
Вот это :
    char log_ch[] = log_c.toLocal8Bit().constData();
или     char log_ch[] =QPrintable(log_c);
Должно работать.
Но я получаю вот такие ошибки :
initializer fails to determine size of log_ch
array must be initialized with a brace-enclosed initializer


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: kambala от Октябрь 02, 2013, 21:23
а так делать и нельзя, при чем я уже писал об этом. используй решение Alex Custov'а.


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Trademaster от Октябрь 03, 2013, 19:55
Я не знаю ,может кому пригодится. Вот отличный способ.
QString test = login->text();
    char *charPointer = (char*)test.toUtf8().data();

Самое лучшее решение.


Название: Re: Получить значение из QLineEdit и запихнуть в массив char
Отправлено: Old от Октябрь 03, 2013, 20:01
Самое лучшее решение.
Нет, это ошибочное решение.
Указатель будет указывать на уже освобожденную память.