cout 是否保证具有 ctype<char> 刻面?
Is cout Guaranteed to Have the ctype<char> facet?
给定: 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++程序中构造的每个语言环境至少具有以下标准方面 [...]:
- std::ctype
- 。
任何区域设置,即甚至不属于 cout
对象的区域设置都将支持 std::ctype<char>
。