Название: транслит русских букв Отправлено: barm12345 от Февраль 13, 2021, 12:19 Добрый день!
В Qt3 использовал фукцию транслита (локаль KOI-8), в Qt5 локаль UTF-8, дает warnings: src/my.cpp:200:7: warning: multi-character character constant [-Wmultichar] std::string translit(const std::string& r) { std::map<char,std::string> tbl; tbl['А']= "A"; tbl['Б']="B"; tbl['В']="W"; tbl['Г']="G"; ... std::string ret; for (int i=0; i<(int)r.length(); ++i) { if(tbl.find(r) != tbl.end()) ret+=tbl[r]; else ret+=r; } Пробовал иcпользовать qPrintable(), не помогает, подскажите плиз, как правильно записать для UTF-8 Название: Re: транслит русских букв Отправлено: barm12345 от Февраль 13, 2021, 12:33 и такой еще warning дает:
warning: overflow in implicit constant conversion [-Woverflow] Название: Re: транслит русских букв Отправлено: kambala от Февраль 13, 2021, 13:12 при чем тут Qt, если ты работаешь с std?
русские буквы в UTF-8 занимают 2 байта, а ты пытаешься их засунуть в однобайтный char. Думаю, проще всего будет работать с char16_t / std::u16string, если ты не на С++20. Код https://en.cppreference.com/w/cpp/language/character_literal Название: Re: транслит русских букв Отправлено: barm12345 от Февраль 13, 2021, 13:38 Огромное спасибо)
|