所有C ++输入和输出流都有一个关联的语言环境; std::ios_base::getloc()
方法按值返回std::locale
,因此必须在构造期间设置该值。使用imbue()
mutator,可以在构建流后更改语言环境。但是流的默认语言环境是什么?标准库类(std::ofstream
等)的流在构建之后的区域设置是什么?程序启动时标准流(std::cout
,std:cerr
和std:log
)的区域设置是什么?
我在流构造函数中看到的文档没有用。
答案 0 :(得分:1)
所有流的最终基类std::basic_ios
要求所有流的构造函数调用初始化方法std::basic_ios::init
。该方法将流的语言环境初始化为std::locale
default constructor给出的语言环境。默认构造函数构造"全局语言环境"的副本,默认情况下为"classic" locale,如果全局语言环境尚未更改(使用std::locale::global()
)。
因此,所有流的默认语言环境通常都是" classic"区域设置。