Ответ 1
Вызов конструктора std:: locale ( ") создает объект локали, который представляет пользовательские настройки. Стандарт не говорит, что это значит, но во многих системах библиотека заменяет все, что находится в переменной среды (часто LANG
или LC_ALL
) вместо пустой строки. Например, общее имя для американского языка -" en_US". (В системах POSIX вы можете ввести locale -a
, чтобы отобразить имена поддерживаемых локалей.)
locale -a
должен работать для вас.
Если вы имеете в виду программно из С++ std libary, я не уверен.
Этот вопрос о переполнении стека, вероятно, также уместен, но он, похоже, не получил большого ответа.
Edit
Для использования UTF-16 вам, вероятно, понадобится libiconv, как указано в этот вопрос.