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