Я пытающийся инстанцировать a std::locale
объект с американской или британской строкой языкового стандарта.
Оба std::locale loc("en_US")
и std::locale loc("en_GB")
выдайте плохое исключение на этапе выполнения имени локали. Создание использования локали ""
или "C"
хорошо работает; однако, я испытываю затруднения при установке локали отдельной страны.
Причина, которую я хотел бы сделать, это в целях поблочного тестирования, чтобы удостовериться, что набор строковых методов сортировки работает правильно.
Я должен также указать, что кодирую в Windows с помощью Visual Studio 2008, и я хотел бы сохранить свой код межплатформенным, если это возможно.
Строки, которые поддерживает 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" ??