Есть ли кроссплатформенный класс строки Unicode, который я могу использовать как в системах Win32, так и в MacOSX? - PullRequest
0 голосов
/ 19 февраля 2011

Также мне нужно преобразование регистра с учетом локали..NET делают это очень хорошо.Нам, программистам на С ++, приходится ждать 100 лет за такую ​​вещь?Я знаю о библиотеке ICU, но она составляет 20 МБ, и я даже не могу связать свой код с ней ... В общем, я хочу закончить этот кошмар ..

Ответы [ 2 ]

3 голосов
/ 19 февраля 2011

Возможно, вы захотите использовать API, предоставляемый операционной системой.В Windows есть NLS API, который занимается сравнением строк и преобразованием конкретных локалей.

Автономные библиотеки Unicode - это ICU и IConv.Оба требуют некоторого времени, чтобы учиться.Файл данных также довольно большой - предполагается, что он будет содержать> 10 миллионов файлов данных для поддержки большинства языков.

Кстати, ошибка вашей ссылки обычно вызвана тем, что вы указали статическую библиотеку, но импортированная функция имеет атрибут dllimport, который указывает DLL.По умолчанию заголовочные файлы ICU объявляют dllimport в своих API.Перед включением заголовка ICU необходимо определить макрос.

2 голосов
/ 19 февраля 2011
  • libiconv - это кроссплатформенная библиотека юникода, часть glibc и часть стандарта POSIX.1-2001. Он также доступен на Mac и Windows.
  • UTF-8 - кодировка символов, обратно совместимая с ASCII.
  • C-строки - это байтовые массивы с нулевым символом в конце, которые могут содержать ASCII и UTF-8.

Это все, что тебе нужно. Кодировать / декодировать в UTF-16 и UCS-32 или что вам нужно, когда требуется для взаимодействия с устаревшими операционными системами.

...