Глядя на стандарт Юникод , они рекомендуют использовать простые char
s для хранения строк в кодировке UTF-8. Работает ли это должным образом с C ++ и базовым std::string
, или существуют случаи, когда кодировка UTF-8 может создавать проблемы?
Например, при вычислении длины она может не совпадать с количеством байтов - как это должно обрабатываться? Читая стандарт, я, вероятно, в порядке использования массива char
для хранения, но мне все равно нужно будет самостоятельно писать такие функции, как strlen
и т. Д., Которые работают с кодированным текстом, потому что, насколько я понимаю проблема, стандартные подпрограммы либо только ASCII, либо ожидают широких литералов (16 бит или более), которые не рекомендуются стандартом Unicode. Пока что лучший источник информации о кодировании - это сообщение о Joel's Software , но оно не объясняет, что мы, бедный разработчик C ++, должны использовать:)