Перевод char в qstring

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

6 ответов

Помочь может макрос:

#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 );
>

Вот две процедуры. Это для тех у кого ОСОБЫЕ проблемы с кодировками:
Хотя работать должны у всех.

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

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

for (int i=0;i 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;

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

Источник

Преобразование unsigned *char в QString

Пишу программу для работы с реестром и сращу же столкнулся с первыми трудностями. WinApi функция RegQueryValueEx возвращает значение в unsigned char, знаю что это беззнаковый char, но преобразовать его в QString не могу, не помогает не один из его методов.

Как сделать преобразование?

И в чем разница в использовании char и unsigned? Если при

в обоих случаях ASCII = 97.

Добавлено через 1 минуту
пробовал все методы from. и to. из QString, не один не подходит

qstring to unsigned char*
как же много еще я не знаю. сохраняю значение unsigned char* ucTTT; ucTTT = new unsigned.

Перевод из Qstring в unsigned char
Сломал голову как сделать такое преобразование((( имеется Qstring str = «0xFFFFFFE0» как эту.

Преобразование QString в const char*
Добрый день, Нужно из XML файла считать атрибут тега. Сам файл в кодировке Utf8. QDomElement.

Преобразование QString в const char *
Как правильно преобразовать QString в const char * ?Совет был использовать метод .toStdString,но.

который на вход получает ASCII/Latin-1

спасибо, за ответы. В теории все понял, а вот на практике не могу реализовать, помогите изменить функцию, чтобы она выводила все записи в данном разделе реестра. Я как не пытался постоянно ошибки или вылеты.

Заранее огромное спасибо!

QString std::wstring и не нужно возиться с char-ами

А такие касты изначально должны насторожить .

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

QString в unsigned char «по-нормальному»
Добрый день. Имеется QString 3667B41D645141D69D08B838DBE80BB0 Нужно «разложить» ее в массив.

Char и const unsigned char
Есть сторонняя библиотека с функцией которая как параметр принимает const unsigned char *DPTRS.

QString to Char
Здравствуйте, в общем надо из LineEdit вытащить строку и записать в char, я понимаю надо сделать.

QString в char*
Доброго времени суток. Я пытаюсь вставить в массив char элемент(символ), который повторяется в.

Источник

Qt — Как конвертировать QString в char (НЕ char *)

Кажется, это должно быть довольно простым делом, но мне трудно понять, как это сделать. По сути, у меня просто есть объект QString, который всегда будет иметь длину один символ (в частности, букву), и мне нужно преобразовать его в символ, чтобы установить его для объекта в моем классе этого типа. Я знаю, как сделать это char *, с QString(«myTextHere»).toStdString.c_str() , но объект, значение которого нужно установить, не является char *, это char. Есть ли способ сделать это? Спасибо!

Решение

Я почти уверен, что нашел способ конвертировать значение, не получая ошибку о QCharRef, я обнаружил, если я использую QString::at() функция, чтобы получить первый индекс вместо QString(«myText»)[0] , а затем использовать toAscii() на этом значении оно работает и дает правильное значение, которое я хочу. Другими словами, это то, что я сделал:

Другие решения

Если вы утверждаете, что это возвращает символ *:

Тогда, очевидно, это получит первый символ, который будет char :

Это может выглядеть не очень красиво, и, возможно, есть лучшие способы получения первого символа, но по определению этот код должен (вероятно, должен) Работа.

Используйте оператор индекса, чтобы получить первый символ строки:

Тем не менее, нет необходимости конвертировать в std::string так что следующая идея лучше:

Основная проблема заключается в том, что QString находится в UTF-16 и содержит QChar s, двухбайтовые символы. Если ваш персонаж может быть представлен в кодировке latin-1, вы должны использовать

В противном случае вам понадобится больший тип (ПРИМЕЧАНИЕ: даже это сокращает символы, отличные от BMP, пополам):

Как уже говорили другие, используйте QString :: operator []. Использование этого в QString вернет QCharRef, вспомогательный класс, эквивалентный QChar. Поскольку QChar предназначен для поддержки символов Юникода, существует только одна дополнительная спецификация. Из QChar в документации qt (4.7):

QChar предоставляет конструкторы и операторы приведения, которые облегчают
конвертировать в и из традиционных 8-битных символов. Если вы определили
QT_NO_CAST_FROM_ASCII и QT_NO_CAST_TO_ASCII, как объяснено в
Документация QString, вам нужно будет явно вызвать fromAscii () или
fromLatin1 () или используйте QLatin1Char, чтобы создать QChar из 8-битного
char, и вам нужно будет вызвать toAscii () или toLatin1 (), чтобы получить
8-битное значение обратно.

Моя сборка Qt не позволит

char c = QString(«myTextHere»)[0];

и вместо этого я бы использовал

char c = QString(«myTextHere»)[0].toAscii();

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Научные работы на RJ-diplom.ru
Adblock
detector