Единственный способ, которым UTF-8 влияет на std::string
, - это size()
, length()
, и все индексы измеряются в байтах, а не в символах.
И, как указывает sbi, приращение итератора, предоставляемого std::string
, будет продвигаться вперед по байту, а не по символу, поэтому он может фактически указывать на середину многобайтовой кодовой точки UTF-8. В стандартной библиотеке нет итератора с поддержкой UTF-8, но в сети есть несколько доступных.
Если вы помните это, вы можете поместить UTF-8 в std::string
, записать его в файл и т. Д. Как обычно (под этим я подразумеваю способ использования std::string
без UTF- 8 внутри).
Возможно, вы захотите начать свой файл с метки порядка байтов, чтобы другие программы знали, что это UTF-8.