派生自标准facet与_byname版本之间的区别

时间:2018-01-06 15:18:02

标签: c++

我尝试过派生自定义numpunct<>来自numpunct<>的方面以及来自numpunct_byname<>。两者都给出相同的结果,两种方法都有效。

我尝试的示例是覆盖do_truename()和do_falsename()虚拟方法,以便返回其德语等价物“wahr”和“falsch”。

派生自numpunct_byname<> : http://coliru.stacked-crooked.com/a/32172a867ab56086

源自numpunct<> : http://coliru.stacked-crooked.com/a/33e1190c2a783e1a

两种方法都能正常运作。

有什么区别吗?

我如何知道采用哪种方法?

感谢。

1 个答案:

答案 0 :(得分:3)

一个版本使用标点符号的默认值,而另一个版本将从命名的语言环境加载内容。

如果您没有为语言环境命名,然后再覆盖虚拟功能,则没有区别。

您可以直接使用_byname版本并命名德语区域设置(以OS依赖方式)。