由于Windows默认情况下没有支持UTF8的C ++语言环境,我想构建一个支持UTF8的自定义语言环境对象(通过使用自定义ctype facet创建它)。
如何构建具有我自己的ctype实现的语言环境对象(我只找到使用现有语言环境作为基础构建语言环境的函数。)
如果C ++根本不支持使用自定义ctype facet构建语言环境,为什么会这样呢?
答案 0 :(得分:5)
可以通过继承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();