所有 C++ 输入和输出流都有关联的语言环境;该std::ios_base::getloc()方法按值返回std::locale,因此该值必须在构造期间设置。可以在构建流后使用imbue()变异器更改区域设置。但是流的默认区域设置是什么?标准库类(等)的流std::ofstream在构建后具有什么区域设置?程序启动时标准流(std::cout、std:cerr和)的区域设置是什么?std:log
我见过的流构造函数的文档没有帮助。
所有流的最终基类 ,std::basic_ios要求所有流的构造函数调用初始化方法std::basic_ios::init。该方法将流的区域设置初始化为std::locale默认构造函数给定的区域设置。如果全局区域设置尚未更改(使用),则该默认构造函数将构造“全局区域设置”的副本,默认情况下,该副本是“经典”区域std::locale::global()设置。
因此,所有流的默认区域设置通常是“经典”区域设置。