UTF-8 экономит место, если вы в основном используете стандартные символы ASCII.
std :: string не имеет проблем с UTF-8, так как в нем нет 0 байтов. Вы можете указать std :: string, как долго вводятся символы ввода, если они имеют нулевые байты, как в UTF-32. std :: string не сможет определить количество символов в вашей строке UTF-8, вам придется использовать внешнюю функцию.
Кроме того, существует широкая версия std :: string с использованием wchar_t, в отличие от char, я просто забываю имя.
Также в бусте есть аспекты для преобразования между кодировками.
Вы можете использовать стандартную библиотеку с boost. Или вы можете использовать функции обработки строк из библиотеки C. Есть также функции, предоставляемые средами программирования, такими как Qt и Tcl.
См. Например:
utf8 фасет codecvt