首页 > 解决方案 > 流默认具有哪种语言环境

问题描述

所有 C++ 输入和输出流都有一个关联的语言环境;该std::ios_base::getloc()方法返回一个std::locale值,因此该值必须在构造过程中设置。可以在构建流后使用imbue()mutator 更改语言环境。但是流的默认语言环境是什么?std::ofstream标准库类(等)的流在构建后具有什么语言环境?程序启动时标准流( 和 )的语言环境是std::cout什么std:cerrstd:log

我为流构造函数看到的文档没有帮助。

标签: c++localization

解决方案


所有流的最终基类std::basic_ios,要求所有流的构造函数调用初始化方法std::basic_ios::initstd::locale该方法将流的语言环境初始化为默认构造函数给定的语言环境。如果全局语言环境未更改(使用) ,则该默认构造函数构造“全局语言环境”的副本,默认情况下这是“经典”语言环境。std::locale::global()

因此,所有流的默认语言环境通常是“经典”语言环境。


推荐阅读