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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Как оптимальнее прочитать текст из файла - целиком или поблочно? http://www.cyberforum.ru/cpp/thread1775912.html
#include "stdafx.h" #include <conio.h> #include <locale.h> #include <string> char buf={}; int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL,"RUS"); char filename={}; printf("Введите название файла:");
C++ Получить таблицу температур используя список Данную программу я написал работает верно, но как её можно реализовать с помощью списка, помогите пожалуйста #include <stdio.h> #include <conio.h> void main () { float c,f; float t1,t2,dt; printf("t1->"); scanf("%f", &t1); http://www.cyberforum.ru/cpp/thread1775870.html
C++ Найти максимальный элемент среди элементов кратных 2
Найти максимальный элемент среди элементов кратных 2.
Сформировать предложение из слов заданной длины, в которых нет перевернутой заданной подстроки, но есть сама C++
Дан массив слов и подстрока. Сформировать предложение из слов заданной длины, в которых нет перевернутой заданной подстроки, но есть сама заданная подстрока. Перед включением в предложение удалить из слов первое вхождение заданной подстроки.
C++ Заменить в слове все маленькие латинские буквы от ‘a’ до ‘y’ на следующие по алфавиту http://www.cyberforum.ru/cpp/thread1775830.html
Дано слово. Заменить в слове все маленькие латинские буквы от ‘a’ до ‘y’ на следующие по алфавиту (для слова “abc2=zx0” получаем “bcd2=zy0”).
C++ Создать БД с использованием массива записей Создать БД с использованием массива записей . В файле текстовом хранятся строки: номер наименование автор год выпуска кол-во на складе цена. Из файла заполнить БД,вывести на экран,алгоритмы: -поиска самой дорогой книги -сортировать погоду -поиск по автору -поиск по названию -определения наличия на складе подробнее

Показать сообщение отдельно
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239

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

05.07.2016, 10:53. Просмотров 219. Ответов 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);
Что кажется мне странным, в библиотеке есть куча других итераторов, но как они работают не совсем понятно. Если кто знает более адекватное решение, подскажите.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru