@DiIce

Как корректно обрезать строку тип string в utf8 на с++?

Есть строка тип string, в ней строка в кодировке utf8 (русские, английские буквы, цифры)
Как ее корректно обрезать или частично скопировать в новую переменную ограничив, допустим на 10 символов?
  • Вопрос задан
  • 1192 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
ICU
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
Символов Юникода или байтов UTF-8?

В любом случае байты UTF-8 делятся на три категории…
• Начальные: 0x00…0x79, и 0xC0…0xF4
• Дополнительные (не бывают в начале): 0x80…0xBF
• Запрещённые: 0xF5…0xFF. В наших целях тоже можно отнести к начальным.

Если задача — получить 10 символов, то находим 11-й начальный символ и обрезаем перед ним.

Если задача — получить 10 байт и 11-й (s[10], если таковой есть, разумеется) — не начальный, начинаем урезать строку, пока не отрежем начальный символ.
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
Как ее корректно обрезать или частично скопировать в новую переменную ограничив, допустим на 10 символов?

Корректно - никак (это всё будут фокусы).
Корректно с локализованными строками вы должны работать как wstring, строки wchar_t ...дальше вы можете с ними делать всё привычны способом: определять длину, искать символы, обрезать и дополнять...

P.S. Если не лень, можете покопаться и найти готовые примеры кода здесь:
Задачи по программированию на языке C
Задачи по программированию на языке C++
А если лень ... то, значит, и не очень нужно ;-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы