Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
#1

Icu итератор - C++

05.07.2016, 10:53. Просмотров 230. Ответов 3
Метки нет (Все метки)

Здравствуйте. Подскажите как с помощью icu проитерировать посимвольно UnicodeString и на выходе получить то, что сразу можно в обычный string запихнуть. Нагуглил такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <unicode/unistr.h>
#include <unicode/uchriter.h>
/******/
    icu::UnicodeString ustr("Привет Мир! Hello World! дё–з•ЊпјЊдЅ*好!");
    
    const UChar *testText = ustr.getTerminatedBuffer();
    UCharCharacterIterator iter(testText, u_strlen(testText));
    
    while(iter.hasNext()){
        std::cout << iter.next32PostInc() << std::endl;
    }
Но next32PostInc() возвращает номер символа в unicode таблице, преобразовать его в строку можно так:
C++
1
2
3
    icu::UnicodeString uni_str((UChar32)iter.next32PostInc());
    std::string str;
    uni_str.toUTF8String(str);
Что кажется мне странным, в библиотеке есть куча других итераторов, но как они работают не совсем понятно. Если кто знает более адекватное решение, подскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 10:53     Icu итератор
Посмотрите здесь:

Библиотека icu - ошибка компиляции - C++ Builder
Вечер добрый! Подключил хидер &lt;boost/regex/icu.hpp&gt; (RS 2010) для работы с регулярными выражениями в Юникоде. Код функции: ...

Как правильно собрать ICU для g++ под Windows? - C++
Не получается собрать ICU для компилятора g++ 4.8.2. Делаю через MSYS. Мои команды: Всегда получаю одно и тоже самое: Как правильно...

ICU - International Components for Unicode (библиотека для раб. с юникод) - C++ Builder
господа программисты у меня к вам вопрос Скачал Отсюда исходники ICU для работы с Юникод. Собрал их с помощью vss. В Borland е указал...

Итератор - C++
Добрый день. Я начинающий. Есть проект пытаюсь сделать построение-отладку выдает ошибку типа: Ошибка 1 error C2061: синтаксическая...

итератор - C++
скажите как в этой задачи перевести десятичное число в двоичное??? вот условие задачи!!! вот код!! main.h #include &lt;cstdlib&gt; ...

Итератор - C++
Вот задача: Реализовать шаблон упорядоченного массива как двусвязного списка. Операцию доступа по индексу заменить итератором. Вопрос:...

Итератор - C++
#include &lt;iostream&gt; #include &lt;list&gt; using namespace std; list&lt;int&gt;::iterator pos (list&lt;int&gt; a,list&lt;int&gt;::iterator it) { for (it;...

итератор - C++
Привет. Не получается создать итератор. std::vector&lt;std::list&lt;size_t&gt; &gt; adjacentList; если пишу так ...

Итератор С++ - C++
помогите пожалуйста написать итератор, накапливающий сумму пройденных элементов!!!

Итератор!!!!! - C++
Есть такое задание: Разработать класс «Итератор», который должен содержать конструктор и функции просмотра текущего элемента, перехода к...

итератор - C++
Привет всем! подскажите пожалуйста литературу где подробно описана реализация итераторов ...

Итератор ? - C++
Как выглядит итератор на вложеный контейнер? Например осуществить доступ к 1-му символу 3-го элемента в векторе vector&lt; &lt;vecrot&lt;char&gt; &gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1823 / 1241 / 288
Регистрация: 05.06.2014
Сообщений: 3,551
05.07.2016, 11:43     Icu итератор #2
Нет, ну я понимаю что не спортивно, но:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    const char*str="Привет Мир! Hello World! дё–з•Њ,дЅ*好!";//разумеется, строка должна быть в utf-8
    for(const char*read_pos=str;*read_pos;)
    {
        std::string buf;
        buf.push_back(*read_pos++);
        while((*read_pos&192)==128)
            buf.push_back(*read_pos++);
        cout<<buf<<endl;
    }
    return 0;
}
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
05.07.2016, 12:25  [ТС]     Icu итератор #3
Renji, спасибо, но к сожалению icu мне нужен не только для этого)
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
06.07.2016, 16:35     Icu итератор #4
Юзайте метод current. Он вам вернет тот ючар на который смотрит итератор.

Добавлено через 2 минуты
А вообще надо использовать их конвертеры. Инфа тут http://userguide.icu-project.org/conversion/converters
Yandex
Объявления
06.07.2016, 16:35     Icu итератор
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru