Если вы хотите представить строки пользователю, вам, возможно, придется принять во внимание wchar_t
(или некоторый другой определенный библиотекой тип). Различные компиляторы и платформы определяют wchar_t
по-разному, потому что они используют разные методы кодирования Unicode. Например, в Windows / Visual C ++ wchar_t
- это 16-битный тип, подходящий для UTF-16. Например, в GCC / Linux wchar_t
- это 32-битный тип, подходящий для UTF-32.
В библиотеке IBM ICU есть функции преобразования для преобразования из одной кодировки в другую. Ваша платформа (например, Win32) может также иметь функции для преобразования из одной кодировки в другую.
В зависимости от ваших требований (скорость, использование памяти), вы должны выбрать внутренний формат, подходящий для платформы. В Windows это может быть UTF-16, а в Linux это может быть UTF-32. Таким образом, вам не придется все время перекодировать строки, просто выполнять над ними простые операции, определяемые платформой (wcslen()
, wcscmp()
и т. Д.).
Для внешних форматов (текстовых файлов и т. Д.) Я обычно использую UTF-8. Причина в том, что файлы значительно меньше, если они содержат текст на западном языке. Еще одним преимуществом является то, что вам не нужно учитывать бесконечность в UTF-8, что снижает вероятность ошибок (с вашей или какой-либо другой стороны).
IBM ICU - очень большая и компетентная библиотека для обработки строк Unicode. Хотя, это может быть использование кувалды, чтобы вбить маленький гвоздь. Вам нужен весь его функционал? Функциональность Unicode, поддерживаемая целевой платформой, может соответствовать вашим требованиям.