Почему делает станд.:: местоположение локали (“en_US”) выдает исключение?

Я пытающийся инстанцировать a std::locale объект с американской или британской строкой языкового стандарта.
Оба std::locale loc("en_US") и std::locale loc("en_GB") выдайте плохое исключение на этапе выполнения имени локали. Создание использования локали "" или "C" хорошо работает; однако, я испытываю затруднения при установке локали отдельной страны.

Причина, которую я хотел бы сделать, это в целях поблочного тестирования, чтобы удостовериться, что набор строковых методов сортировки работает правильно.

Я должен также указать, что кодирую в Windows с помощью Visual Studio 2008, и я хотел бы сохранить свой код межплатформенным, если это возможно.

6
задан kiamlaluno 1 August 2015 в 06:24
поделиться

1 ответ

Строки, которые поддерживает std :: locale , зависят от реализации; возможно, реализация не поддерживает строку, которую вы передаете в качестве аргумента.

Поскольку вы программируете в Windows, вас может заинтересовать Language Strings , в котором перечислены идентификаторы языков, используемые setlocal и Country / Region Strings для идентификаторов стран. Насколько я понимаю, идентификаторы языков используют дефис (например, en-US , nl-BE и zh-HK ).

Вы можете найти дополнительную информацию о std :: locale :: global (std :: locale ("zh-CN")) Gets "Bad locale name" ??

6
ответ дан 9 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

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