cout 是否保证具有 ctype<char> 刻面?

Is cout Guaranteed to Have the ctype<char> facet?

本文关键字:lt char gt 刻面 ctype 是否 cout      更新时间:2023-10-16

给定: auto foo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"s我可以通过以下方式将所有字符转换为小写:

use_facet<ctype<char>>(cout.getloc()).tolower(data(foo), next(data(foo), foo.size()));

现场示例

但这取决于包含ctype<char> facet cout.getloc()

假设我使用的是未修改的cout我可以假设cout.getloc()将包含facet ctype<char>,还是在使用之前需要确认这一点:

has_facet<ctype<char>>(cout.getloc())

来自 cpp首选项:

在C++程序中构造的每个语言环境至少具有以下标准方面 [...]:

  1. std::ctype

任何区域设置,即甚至不属于 cout 对象的区域设置都将支持 std::ctype<char>