Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Октябрь 11, 2013, 18:45



Название: QString to char
Отправлено: demaker от Октябрь 11, 2013, 18:45
Подскажите способы преобразовать QString в массив типа char?


Название: Re: QString to char
Отправлено: alex312 от Октябрь 11, 2013, 19:18
http://qt-project.org/doc/qt-5.1/qtcore/qtextcodec.html#fromUnicode
http://qt-project.org/doc/qt-5.1/qtcore/qstring.html#toLocal8Bit
http://qt-project.org/doc/qt-5.1/qtcore/qstring.html#toLatin1


Название: Re: QString to char
Отправлено: ComputerMouse от Октябрь 12, 2013, 19:01
Подскажите способы преобразовать QString в массив типа char?

Код:
QString str = "text";
char n [100] = str.toStdString.c_str();


Название: Re: QString to char
Отправлено: Old от Октябрь 12, 2013, 19:05
Код:
QString str = "text";
char n [100] = str.toStdString.c_str();
И таки думаете это будет работать? ;)


Название: Re: QString to char
Отправлено: Serr500 от Октябрь 12, 2013, 20:03
Правильный вариант:
Код:
QString str;
// . . .
std::string std_string = str.toStdString();
char* char_array = new char[std_string.length() + 1];
strcpy(char_array, std_string.c_str());
// . . .
delete char_array;


Название: Re: QString to char
Отправлено: Fregloin от Октябрь 12, 2013, 20:12
самое проще qPintable(...)


Название: Re: QString to char
Отправлено: kambala от Октябрь 12, 2013, 20:25
неделю назад же была точно такая же тема


Название: Re: QString to char
Отправлено: Trademaster от Октябрь 13, 2013, 22:58
QString test = login->text();
    char *charPointer = (char*)test.toUtf8().data();




Название: Re: QString to char
Отправлено: Old от Октябрь 13, 2013, 23:00
QString test = login->text();
    char *charPointer = (char*)test.toUtf8().data();



Нельзя так делать!
Я вам уже писал. Указатель charPointer будет указывать на уже освобожденную память.


Название: Re: QString to char
Отправлено: kibsoft от Октябрь 13, 2013, 23:43
Правильный вариант:
Код:
QString str;
// . . .
std::string std_string = str.toStdString();
char* char_array = new char[std_string.length() + 1];
strcpy(char_array, std_string.c_str());
// . . .
delete char_array;

Можно обойтись без std_string.
В описании метода все есть: http://qt-project.org/doc/qt-5.1/qtcore/qbytearray.html#data


Название: Re: QString to char
Отправлено: Serr500 от Октябрь 14, 2013, 09:46
"Правильный вариант" относилось не к тому, что надо делать именно так, а исправление вот этого:
Код:
QString str = "text";
char n [100] = str.toStdString.c_str();