Действительно ли возможно создать Вашу собственную локаль

Так как Windows не имеет локали C++ с поддержкой UTF8 по умолчанию, я хотел бы создать пользовательский объект языкового стандарта, который поддерживает UTF8 (путем создания его с пользовательским фасетом ctype).

Как я могу создать объект языкового стандарта со своей собственной ctype реализацией (я только нашел, что функции создали локаль с помощью уже существующей локали в качестве основы..)

Если C++ не поддерживает конструкцию локалей с пользовательским фасетом ctype вообще, почему то, что так?

9
задан smerlin 25 April 2010 в 22:58
поделиться

1 ответ

Можно создавать собственные фасеты путем наследования от std :: locale :: facet. Локали могут использовать эти настраиваемые фасеты, как показано в следующем коде:

class custom_facet : public std::locale::facet {
public:
    static std::locale::id id;
    custom_facet(int);  
    int custom_value() const; 
    };

std::locale  custom_locale ( std::locale(), new custom_facet() );
int s = std::use_facet<custom_facet>(custom_locale).custom_value();
5
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

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