From cppreference.com
template<classCharT>CharTtolower(CharTch,constlocale&loc);Converts the character ch to lowercase if possible, using the conversion rules specified by the given locale's
facet.
Parameters
ch - character loc - locale Return value
Returns the lowercase form of ch if one is listed in the locale, otherwise return ch unchanged.
Notes
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::tolower cannot be used to obtain the correct lowercase form in this case.
Possible implementation
template<classCharT>CharTtolower(CharTch,conststd::locale&loc){returnstd::use_facet<std::ctype<CharT>>(loc).tolower(ch);}Example
Run this code
#include<cwctype>#include<iostream>#include<locale>intmain(){wchar_tc=L'\u0190';// Latin capital open E ('Ɛ')std::cout<<std::hex<<std::showbase;std::cout<<"in the default locale, tolower("<<(std::wint_t)c<<") = "<<(std::wint_t)std::tolower(c,std::locale())<<'\n';std::cout<<"in Unicode locale, tolower("<<(std::wint_t)c<<") = "<<(std::wint_t)std::tolower(c,std::locale("en_US.utf8"))<<'\n';}Possible output:
in the default locale, tolower(0x190) = 0x190 in Unicode locale, tolower(0x190) = 0x25b See also