Russian Qt Forum

Программирование => С/C++ => Тема начата: WildEagle от Июль 03, 2007, 17:45



Название: Как правильно преобразовать UTF-8 строки?
Отправлено: WildEagle от Июль 03, 2007, 17:45
Использую следующие функции для конвертирования строк в Uppercase и LowerCase:
Код:
 
std::string ConvertToUpper(const std::string &aValue)
{
        std::string result = aValue;
        std::transform(aValue.begin(), aValue.end(), result.begin(), (int(*)(int))std::toupper);
        return result;
}
 
std::string ConvertToLower(const std::string &aValue)
{
        std::string result = aValue;
        std::transform(aValue.begin(), aValue.end(), result.begin(), (int(*)(int))std::tolower);
        return result;
}
 

Недавно заметил что они не работают для кириличных UTF-8 строк.
Как правильно преобразовать std::string в Uppercase и LowerCase для UTF-8?


Название: Re: Как правильно преобразовать UTF-8 строки?
Отправлено: fightcat от Сентябрь 18, 2007, 15:52
Ну, если я не ошибаюсь, для начала, для работы с UTF нужно использовать std::wstring...


Название: Re: Как правильно преобразовать UTF-8 строки?
Отправлено: Tonal от Сентябрь 19, 2007, 06:22
Алгортим примерно такой:
1) Преобразуем строку из utf-8 в unicode
2) Надругиваемся над unicode строкой
3) переводим обратно.

Или можно, для простоты, вообще всё сразу в unicode переводить и только с ним в проге и работать. ;-)