鉴于:auto foo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"s
我可以将所有字符转换为小写:
use_facet<ctype<char>>(cout.getloc()).tolower(data(foo), next(data(foo), foo.size()));
但这取决于cout.getloc()
包含ctype<char>
facet
。
假设我使用未经修改的cout
,我可以假设cout.getloc()
将包含facet
ctype<char>
,或者我需要在使用之前确认:
has_facet<ctype<char>>(cout.getloc())
答案 0 :(得分:3)
来自cppreference:
在C ++程序中构建的每个语言环境至少包含以下标准方面[...]:
- 的std :: CTYPE&LT;炭&GT;
- ...
醇>
任何区域设置,这意味着即使不属于cout
对象的区域设置也会支持std::ctype<char>
。