LINUX.ORG.RU

[c++][qt4] Объявление char константы - overflow in implicit constant conversion

 


0

0

такая проблема, не могу определить кириллическую char константу

char a='Ъ';

warning: multi-character character constant
In function ‘int main(int, char**)’:
warning: overflow in implicit constant conversion

локаль utf-8

наверное туплю где-то, подскажите пожалуйста, что делать?

Ответ на: комментарий от tri10bit

> я догадался, как от этого избавиться

QChar?

kondor ★★★
()
Ответ на: комментарий от tri10bit

приходит в голову такой вариант QChar('Ъ').toAscii()

или использовать QChar

вообще мне нужен массив символов ... а может вместо массива QString создать... да, так и сделаю

tri10bit
() автор топика
Ответ на: комментарий от tri10bit

Нужно исходить из того, что нелатинские символы в коде должны отсутствовать. Вообще. Даже ради одного символа. Принять это раз и навсегда. Глубоко вздохнуть и переписать код.

Можно использовать QTranslator, но это гемморойно. Можно записать код буквы 'Ъ' и вызывать соответствующий конструктор QChar. Можно добавить target в Makefile, который сгенерирует вам заголовочник с вашим юникодом используя команды для конвертации кодировок.

Если буква должна печататься через однобайтовые методы - нужно использовать QString::toLocal8Bit() или qPrintable(). Если действительно очень необходимо перевести не в локальную кодировку, а в конкретную - QString::toUtf8(), QTextCodec::fromUnicode() и иже с ними.

Dendy ★★★★★
()

спасибо, что ответили, все проблемы решил

просто через два часа лабу нужно показать, и тут обнаружил, что с русским она у меня не дружит)

tri10bit
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.