Можно ли создать свой собственный язык? - PullRequest
9 голосов
/ 26 апреля 2010

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

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

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

1 Ответ

5 голосов
/ 26 апреля 2010

Возможно создание пользовательских фасетов путем наследования от 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();
...