代码之家  ›  专栏  ›  技术社区  ›  smerlin

是否可以创建自己的自定义区域设置

  •  9
  • smerlin  · 技术社区  · 14 年前

    由于Windows默认没有UTF8支持的C++区域,所以我想构造一个支持UTF8的自定义区域设置对象(通过创建一个自定义的Cype刻面)。

    如何使用自己的ctype实现构造locale对象 (我只找到了使用现有区域设置作为基础来构造区域设置的函数..)

    如果C++根本不支持用自定义cType刻面来构造区域,为什么会这样呢?

    1 回复  |  直到 14 年前
        1
  •  5
  •   user283145    14 年前

    可以通过以下方式创建定制的刻面。区域设置可以在以下代码中使用这些自定义方面:

    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();