В настоящее время я использую iconv
для преобразования документов с различными кодировками.
Функция iconv()
имеет следующий прототип:
size_t iconv (
iconv_t cd,
const char* * inbuf,
size_t * inbytesleft,
char* * outbuf,
size_t * outbytesleft
);
Пока мне нужно было толькоконвертировать буферы типа char*
, но я также понял, что мог бы конвертировать буферы типа wchar_t*
.Фактически, iconv
даже имеет специальное имя кодировки "wchar_t"
для таких буферов: эта кодировка адаптируется к настройкам операционной системы: то есть на моих компьютерах она относится к UCS-2 в Windows и к UTF-32 в Linux.
Но здесь кроется проблема: если у меня есть буфер wchar_t*
, я могу reinterpret_cast
использовать его в буфер char*
, чтобы использовать его в iconv
, но тогда я сталкиваюсь с поведением, определяемым реализацией: Я не могу быть уверен, что все компиляторы будут вести себя одинаково в отношении приведения.
Что мне здесь делать?