cout是否保证有ctype <char> facet?

时间:2016-05-25 12:12:24

标签: c++ locale cout facet ctype

鉴于:auto foo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"s我可以将所有字符转换为小写:

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

Live Example

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

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

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

1 个答案:

答案 0 :(得分:3)

来自cppreference

  

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

     
      
  1. 的std :: CTYPE&LT;炭&GT;
  2.   
  3. ...
  4.   

任何区域设置,这意味着即使不属于cout对象的区域设置也会支持std::ctype<char>