Допустимые имена локали

Как Вы находите допустимые имена локали?

Я в настоящее время использую Mac OS X.
Но информация о других платформах также была бы полезна.

#include <fstream>
#include <iostream>


int main(int argc,char* argv[])
{
    try
    {
        std::wifstream  data;
        data.imbue(std::locale("en_US.UTF-16"));
        data.open("Plop");
    }
    catch(std::exception const& e)
    {
        std::cout << "Exception: " << e.what() << "\n";
        throw;
    }
}

% g++ main.cpp
% ./a.out
Exception: locale::facet::_S_create_c_locale name not valid
Abort
22
задан Martin York 17 December 2009 в 16:42
поделиться

1 ответ

На этой странице говорится:

Вызов конструктора std :: locale ("") создает объект языкового стандарта, представляющий предпочтения пользователя. Стандарт не говорит, что это означает, но во многих системах библиотека заменяет все, что находится в переменной окружения (часто LANG или LC_ALL ) вместо пустой строки. Например, обычное имя для американского языкового стандарта - «en_US». (В системах POSIX вы можете ввести locale -a , чтобы перечислить имена поддерживаемых локалей.)

locale -a подойдет вам.

Если вы имеете в виду программно из Библиотека std C ++ Я не уверен.

Этот вопрос о переполнении стека , вероятно, также актуален, но, похоже, он не получил особого ответа.

21
ответ дан 29 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: