UTF-8 к ASCII, пользующемуся Библиотекой ICU

Я хочу создать поверхностную копию H, используя выбранные индексы.

blockquote>

Нет, вы не хотите создавать поверхностную копию.

Я называю это J [и], чтобы модифицировать элементы J, тем самым модифицируя соответствующие элементы H.

blockquote>

Что вы на самом деле хотите сделать - и в итоге сделали - это изменить поддиапазон диапазона элементов контейнера. В C ++ мы делаем это с помощью итераторов; во многих случаях эти итераторы по сути являются просто указателями.

Еще один способ сделать это - когда элементы смежны в памяти - это использовать std::span - но это конструкция C ++ 20 (и у вас могут возникнуть некоторые проблемы из-за отсутствия явной поддержки CUDA, то есть потенциальное отсутствие атрибутов __device__; то же самое относится к gsl::span в некоторых реализациях).

5
задан GetFree 7 October 2008 в 03:44
поделиться

5 ответов

Попробуйте это, ucnv_convert ("US-ASCII", "UTF-8", targer, targetsize, источник, sourcesize, pError)

4
ответ дан 14 December 2019 в 04:51
поделиться

Я не знаю о ICU, но ICONV делает это и его довольно легкое для изучения. это - только приблизительно 3-4 вызова и в чем Вы нуждаетесь в своем случае, должен использовать ICONV_SET_TRANSLITERATE использование флага iconvctl().

3
ответ дан 14 December 2019 в 04:51
поделиться

Это не область, я - эксперт в, но если у Вас нет библиотеки удобной, который делает это для Вас легко затем, Вы могли бы быть лучше из просто создания справочной таблицы / карта, которая содержит UTF-8-> значения ASCII. т.е. ключ является символом UTF-8, значение является последовательностью ASCII символов.

0
ответ дан 14 December 2019 в 04:51
поделиться

С-> ss разложение говорит мне о желании разложения совместимости. В ICU Вам нужен класс Нормализатор для этого. Впоследствии, Вы закончите с чем-то как L'odz'. От этой строки можно просто удалить символы неASCII. Никакая потребность в ICU, плоскость STL сделает.

0
ответ дан 14 December 2019 в 04:51
поделиться

Я написал обратный вызов, который разлагается, а затем выполняет некоторую замену. Вероятно, это можно было бы реализовать в виде транслитерации. код здесь decompcb.c и заголовок рядом. Установите его в конвертере Unicode в ASCII следующим образом:

ucnv_setFromUCallBack(gConverter, &UCNV_FROM_U_CALLBACK_DECOMPOSE, &status);

затем используйте gConverter для преобразования из Unicode в ASCII

1
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: