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

C++

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

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

05.07.2016, 10:53. Просмотров 235. Ответов 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);
Что кажется мне странным, в библиотеке есть куча других итераторов, но как они работают не совсем понятно. Если кто знает более адекватное решение, подскажите.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2016, 10:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Icu итератор (C++):

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

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

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

Реализовать двусвязный список (list), итератор (iterator) и константный итератор (сonst_iterator) для списка - C++
не могу понять что должно быть результатом. может подскажете примеры? пожалуйста. Задание: Реализовать двусвязный список (list),...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Renji
1921 / 1319 / 298
Регистрация: 05.06.2014
Сообщений: 3,781
05.07.2016, 11:43 #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;
}
0
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 239
05.07.2016, 12:25  [ТС] #3
Renji, спасибо, но к сожалению icu мне нужен не только для этого)
0
HighPredator
5534 / 1848 / 345
Регистрация: 10.12.2010
Сообщений: 5,455
Записей в блоге: 2
06.07.2016, 16:35 #4
Юзайте метод current. Он вам вернет тот ючар на который смотрит итератор.

Добавлено через 2 минуты
А вообще надо использовать их конвертеры. Инфа тут http://userguide.icu-project.org/conversion/converters
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2016, 16:35
Привет! Вот еще темы с ответами:

Особый итератор словаря. Итератор возвращающий нужные комбинации - Алгоритмы
Немогу разобраться, как написать итератор. У меня есть словарь, ключи это координаты, а значения это либо ноль, либо единичка (True и...

Особый итератор словаря. Медленный итератор - Python
Не могу разобраться, как написать итератор. У меня есть словарь, ключи это координаты, а значения это либо ноль, либо единичка (True и...

qt без icu. Как? - C++ Qt
Проблема в том что написал на QT маленький недоплеер а он занимает 36мб. Что это за библиотека ICU? И можно ли отучить QT от неё и от...

SQLite Как включить поддержку ICU в System.Data.SQLite ? - C#
Это повтор моей темы из рассылки sqlite http://sqlite.1065341.n5.nabble.com/ Как включить поддержку ICU в System.Data.SQLite ? Мне...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.07.2016, 16:35
Ответ Создать тему
Опции темы

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