Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Проблема с Qt4: перевести QString в char и обратно

15K
31 июля 2008 года
umbrella
15 / / 29.10.2006
Возникла проблема с переводом QString в char...:(В Borland-е и Stl есть ф-ия c_str().Она свободно переводит типы String и AnsiString.Подскажите пожалуйста,как это сделать в Qt 4.......:confused:
1.8K
31 июля 2008 года
max_dark
256 / / 11.11.2005
From Qt Reference Documentation
Цитата:
const char * QString::ascii () const
Returns an 8-bit ASCII representation of the string.

и

Цитата:
QString QString::fromAscii ( const char * ascii, int len = -1 ) [static]

57K
29 января 2010 года
ikemy
1 / / 29.01.2010
Помочь может макрос:

#define PCHQSTRING( ba, str, p ) \
QByteArray ba = str.toAscii(); \
p = ba.data();

где ba - любое имя переменной (не объявленной),
str - объявленная переменная QString,
p - объявленная переменная const char* или char*

Ниже приведен пример использования:

void func()
{
const char* cConType;
PCHQSTRING( v1, ctComboBox->currentText(), cConType );
const char* cUserName;
PCHQSTRING( v2, unLineEdit->text(), cUserName );
}
74K
08 августа 2011 года
sergeysenja1992@mail.ru
1 / / 08.08.2011
Вот две процедуры. Это для тех у кого ОСОБЫЕ проблемы с кодировками:
Хотя работать должны у всех.

void MY_QStringtochar(QString *str,char* qwe){

char w;
unsigned short s[150];
QString::iterator p;
p=str->begin();

memcpy(s,p,str->size()*2);
memset(qwe,0,str->size()+1);

for (int i=0;i<str->size();i++){
unsigned short j=s;
switch(j){

case 1040 : w='А'; break;
case 1041 : w='Б'; break;
case 1042 : w='В'; break;
case 1043 : w='Г'; break;
case 1044 : w='Д'; break;
case 1045 : w='Е'; break;
case 1046 : w='Ж'; break;
case 1047 : w='З'; break;
case 1048 : w='И'; break;
case 1049 : w='Й'; break;
case 1050 : w='К'; break;
case 1051 : w='Л'; break;
case 1052 : w='М'; break;
case 1053 : w='Н'; break;
case 1054 : w='О'; break;
case 1055 : w='П'; break;
case 1056 : w='Р'; break;
case 1057 : w='С'; break;
case 1058 : w='Т'; break;
case 1059 : w='У'; break;
case 1060 : w='Ф'; break;
case 1061 : w='Х'; break;
case 1062 : w='Ц'; break;
case 1063 : w='Ч'; break;
case 1064 : w='Ш'; break;
case 1065 : w='Щ'; break;
case 1066 : w='Ъ'; break;
case 1067 : w='Ы'; break;
case 1068 : w='Ь'; break;
case 1069 : w='Э'; break;
case 1070 : w='Ю'; break;
case 1071 : w='Я'; break;
case 1072 : w='а'; break;
case 1073 : w='б'; break;
case 1074 : w='в'; break;
case 1075 : w='г'; break;
case 1076 : w='д'; break;
case 1077 : w='е'; break;
case 1078 : w='ж'; break;
case 1079 : w='з'; break;
case 1080 : w='и'; break;
case 1081 : w='й'; break;
case 1082 : w='к'; break;
case 1083 : w='л'; break;
case 1084 : w='м'; break;
case 1085 : w='н'; break;
case 1086 : w='о'; break;
case 1087 : w='п'; break;
case 1088 : w='р'; break;
case 1089 : w='с'; break;
case 1090 : w='т'; break;
case 1091 : w='у'; break;
case 1092 : w='ф'; break;
case 1093 : w='х'; break;
case 1094 : w='ц'; break;
case 1095 : w='ч'; break;
case 1096 : w='ш'; break;
case 1097 : w='щ'; break;
case 1098 : w='ъ'; break;
case 1100 : w='ь'; break;
case 1099 : w='ы'; break;
case 1101 : w='э'; break;
case 1102 : w='ю'; break;
case 1103 : w='я'; break;
case 1025 : w='Ё'; break;
case 1105 : w='ё'; break;
case 1028 : w='Є'; break;
case 1108 : w='є'; break;
case 1031 : w='Ї'; break;
case 1111 : w='ї'; break;
case 1030 : w='І'; break;
case 1110 : w='і'; break;
case 8470 : w='№'; break;
default : w=j;

}
qwe=w;
}

}




void MY_chartoQString(QString *str,const char* qwe){
unsigned short s[150];
int i;

for(int i=0;i<=strlen(qwe);i++){
s=0;
str->push_back(" ");
}



for (i=0;i<strlen(qwe);i++){
unsigned short j=s;
switch(qwe){

case 'А' : s= 1040 ; break;
case 'Б' : s= 1041 ; break;
case 'В' : s= 1042 ; break;
case 'Г' : s= 1043 ; break;
case 'Д' : s= 1044 ; break;
case 'Е' : s= 1045 ; break;
case 'Ж' : s= 1046 ; break;
case 'З' : s= 1047 ; break;
case 'И' : s= 1048 ; break;
case 'Й' : s= 1049 ; break;
case 'К' : s= 1050 ; break;
case 'Л' : s= 1051 ; break;
case 'М' : s= 1052 ; break;
case 'Н' : s= 1053 ; break;
case 'О' : s= 1054 ; break;
case 'П' : s= 1055 ; break;
case 'Р' : s= 1056 ; break;
case 'С' : s= 1057 ; break;
case 'Т' : s= 1058 ; break;
case 'У' : s= 1059 ; break;
case 'Ф' : s= 1060 ; break;
case 'Х' : s= 1061 ; break;
case 'Ц' : s= 1062 ; break;
case 'Ч' : s= 1063 ; break;
case 'Ш' : s= 1064 ; break;
case 'Щ' : s= 1065 ; break;
case 'Ъ' : s= 1066 ; break;
case 'Ы' : s= 1067 ; break;
case 'Ь' : s= 1068 ; break;
case 'Э' : s= 1069 ; break;
case 'Ю' : s= 1070 ; break;
case 'Я' : s= 1071 ; break;
case 'а' : s= 1072 ; break;
case 'б' : s= 1073 ; break;
case 'в' : s= 1074 ; break;
case 'г' : s= 1075 ; break;
case 'д' : s= 1076 ; break;
case 'е' : s= 1077 ; break;
case 'ж' : s= 1078 ; break;
case 'з' : s= 1079 ; break;
case 'и' : s= 1080 ; break;
case 'й' : s= 1081 ; break;
case 'к' : s= 1082 ; break;
case 'л' : s= 1083 ; break;
case 'м' : s= 1084 ; break;
case 'н' : s= 1085 ; break;
case 'о' : s= 1086 ; break;
case 'п' : s= 1087 ; break;
case 'р' : s= 1088 ; break;
case 'с' : s= 1089 ; break;
case 'т' : s= 1090 ; break;
case 'у' : s= 1091 ; break;
case 'ф' : s= 1092 ; break;
case 'х' : s= 1093 ; break;
case 'ц' : s= 1094 ; break;
case 'ч' : s= 1095 ; break;
case 'ш' : s= 1096 ; break;
case 'щ' : s= 1097 ; break;
case 'ъ' : s= 1098 ; break;
case 'ь' : s= 1100 ; break;
case 'ы' : s= 1099 ; break;
case 'э' : s= 1101 ; break;
case 'ю' : s= 1102 ; break;
case 'я' : s= 1103 ; break;
case 'Ё' : s= 1025 ; break;
case 'ё' : s= 1105 ; break;
case 'Є' : s= 1028 ; break;
case 'є' : s= 1108 ; break;
case 'Ї' : s= 1031 ; break;
case 'ї' : s= 1111 ; break;
case 'І' : s= 1030 ; break;
case 'і' : s= 1110 ; break;
case '№' : s= 8470 ; break;
default : s=qwe;
}}

memcpy(str->begin(),s,strlen(qwe)*2);

}
11
08 августа 2011 года
oxotnik333
2.9K / / 03.08.2007
це индус объявился...
240
08 августа 2011 года
arrjj
1.7K / / 26.01.2011
QString::toStdString::c_str
QString::QString(const char*)
А для тех у кого ОООООчень большие проблемы с кодировкой и не устраивают QString::fromКОДИРОВКА QString::toКОДИРОВКА есть QTextCodec
99K
23 октября
DashAndr
1 / / 23.10.2017
QString str;
const char *chStr = str.toStdString().data(); // return const char *

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог