Поиск простых практических примеров использования ICU на C++

Я ищу простые практические примеры C++ о том, как использовать ICU.
Домашняя страница ICU не полезна в этом отношении.
Меня не интересует, что и почему Unicode.
Несколько демонстраций не являются самодостаточными и не компилируемыми примерами ( где включены? )
Я ищу что-то вроде 'Привет, Мир:
Как открыть и прочитать файл в кодировке UTF-8
Как использовать строковые функции STL / Boost для управления кодировкой UTF-8 веревка так далее.

2 ответов


нет специального способа прочитать файл UTF-8, Если вам не нужно обработать метку порядка байтов (BOM). Из-за того, как работает кодировка UTF-8, функции, которые читают строки ANSI, также могут читать строки UTF-8.

следующий код прочитает содержимое файла (ANSI или UTF-8) и выполнит несколько преобразований.

#include <fstream>
#include <string>

#include <unicode/unistr.h>

int main(int argc, char** argv) {
    std::ifstream f("...");
    std::string s;
    while (std::getline(f, s)) {
        // at this point s contains a line of text
        // which may be ANSI or UTF-8 encoded

        // convert std::string to ICU's UnicodeString
        UnicodeString ucs = UnicodeString::fromUTF8(StringPiece(s.c_str()));

        // convert UnicodeString to std::wstring
        std::wstring ws;
        for (int i = 0; i < ucs.length(); ++i)
            ws += static_cast<wchar_t>(ucs[i]);
    }
}

взгляните на онлайн ссылка на API.

Если вы хотите использовать ICU через Boost, см. импульс.Локаль.


  • ICU Boost Boost, поэтому вы найдете пример использования функций ICU для управления строками, но не Boost.

  • какие образцы вы смотрите? Есть образцы в дереве источников ICU, под icu / source/samples - я думаю, что образцы конвертеров там открываются и закрываются utf-8, а также icu/source/extras / uconv, который является "iconv", как приложение.

  • больше образцов в http://source.icu-project.org/repos/icu/icuapps/trunk/

надеюсь, что это помогает