# std::towupper

< cpp‎ | string‎ | wide

定义于头文件 `<cwctype>` |  |
std::wint_t towupper( std::wint_t ch ); |  |

若可能则转换给定的宽字符为大写。

若 `ch` 的值既不能表示为 wchar_t 又不等于宏 WEOF ，则行为未定义。

### 参数

ch | - | 要转换的宽字符

### 返回值

`ch` 的大写版本，或若无大写版本列于当前 C 本地环境，则为不修改的 `ch` 。

### 注意

此函数只能进行 1:1 映射，例如 'ß' 的大写形式（有一些例外）是双字符字符串 "SS" ，它无法通过 std::towupper 获得。

ISO 30112 指定此映射包含哪些 Unicode 字符对。

### 示例

拉丁字母 'ſ' (U+017F) 是 'S' (U+0053) 的替用小写形式。

    #include <iostream>
    #include <cwctype>
    #include <clocale>

    int main()
    {
        wchar_t c = L'\u017f'; // 拉丁文小写字母长 S ('ſ')

        std::cout << std::hex << std::showbase;
        std::cout << "in the default locale, towupper(" << (std::wint_t)c << ") = "
                  << std::towupper(c) << '\n';
        std::setlocale(LC_ALL, "en_US.utf8");
        std::cout << "in Unicode locale, towupper(" << (std::wint_t)c << ") = "
                  << std::towupper(c) << '\n';
    }

输出：

    in the default locale, towupper(0x17f) = 0x17f
    in Unicode locale, towupper(0x17f) = 0x53

### 参阅

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