Текущий C ++ никоим образом не определяет кодировку. Вы можете заглянуть в настоящую библиотеку Unicode, такую как ICU, или, в некоторых архитектурах и реализациях , вы можете использовать wchar_t для управления и хранения строк Unicode.
Изменить: этот ответ относился к C ++ 03. Как уже отмечалось, это больше не применяется.
Это скорее зависит от того, что вы хотите делать с обрабатываемым текстом. Половина смысла UTF-8 заключается в том, что вам не нужно изменять существующий код, если он обрабатывает 8-битные символы и не делает ничего особенного с символами выше 128. Конечно, strlen - это длина в байтах, а не символ или код. подсчет баллов. Так что, возможно, у вас есть программа для ввода текста и вывода текста, которая может напрямую использовать UTF-8. Или может случиться так, что вы создаете графический интерфейс в тексте и вам нужно обрабатывать текст Ruby и RTL, и в этом случае ваша работа намного сложнее, и вам, вероятно, придется выбрать подходящие библиотеки.
Зависит от версии C++, которую вы используете. C++0x (еще не полностью выпущенный, но все еще поддерживаемый многими компиляторами) добавляет в язык встроенную поддержку UTF-8. В противном случае, язык не поддерживает UTF-8. C++03 и более ранние версии поддерживают юникод через использование широких символов (wchar_t).
Сначала прочтите это: Абсолютный минимум, который должен знать каждый разработчик программного обеспечения о Unicode и наборах символов (без оправданий!)
Если вы используете Visual Studio, войдите в свойства проекта и определите препроцессор, поскольку _UNICODE выполнит эту работу за вас.