# std::tolower(std::locale)

< cpp‎ | locale

定义于头文件 `<locale>` |  |
template< class charT > charT tolower( charT ch, const locale& loc ); |  |

用给定 loacale 的 std::ctype 平面所指定的转换规则，若可能则转换字符 `ch` 为小写。

### 参数

ch | - | 字符
loc | - | 本地环境

### 返回值

若 `ch` 的小写形式列于 locale 则返回它，否则返回不更改的 `ch` 。

### 注意

此函数只能进行 1:1 字符映射。例如希腊文大写字母 'Σ' 拥有两个小写形式： 'σ' 与 'ς'，使用哪一个取决于其在词中的位置 。此情况下对 `do_tolower` 的调用不能获得正确的小写形式。

### 可能的实现

    template< class charT >
    charT tolower( charT ch, const std::locale& loc ) {
        return std::use_facet<std::ctype<charT>>(loc).tolower(ch);
    }

### 示例

    #include <iostream>
    #include <cwctype>
    #include <locale>

    int main()
    {
        wchar_t c = L'\u0190'; // 拉丁文大写开 E ('Ɛ')

        std::cout << std::hex << std::showbase;

        std::cout << "in the default locale, tolower(" << (std::wint_t)c << ") = "
                  << std::tolower(c, std::locale()) << '\n';

        std::cout << "in Unicode locale, tolower(" << (std::wint_t)c << ") = "
                  << std::tolower(c, std::locale("en_US.utf8")) << '\n';
    }

输出：

    in the default locale, tolower(0x190) = 0x190
    in Unicode locale, tolower(0x190) = 0x25b

### 参阅

toupper(std::locale) | 用本地环境的 ctype 刻面将字符转换为大写 (函数模板)
tolower | 转换字符为小写 (函数)
towlower | 转换宽字符为小写 (函数)