# std::towctrans

< cpp‎ | string‎ | wide

定义于头文件 `<cwctype>` |  |
std::wint_t towctrans( std::wint_t wc, std::wctrans_t desc ); |  |

用 `desc` 所标识的当前 C 本地环境的 LC_TYPE 映射宽字符 `wc` 。

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

### 参数

ch | - | 要映射的宽字符
desc | - | 从调用 std::wctrans 获得的 LC_CTYPE 映射

### 返回值

`ch` 的被映射值，使用当前 C 本地环境的 LC_TYPE 中的 `desc` 标识的映射。

### 示例

下列代码演示片假名到平假名的字符映射

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

    std::wstring tohira(std::wstring str)
    {
        std::transform(str.begin(), str.end(), str.begin(), [](wchar_t c) {
             return std::towctrans(c, std::wctrans("tojhira"));
        });
        return str;
    }

    int main()
    {
        std::setlocale(LC_ALL, "ja_JP.UTF-8");
        std::wstring kana = L"ヒラガナ";
        std::wcout << "katakana characters " << kana
                   << " are " << tohira(kana) << " in hiragana\n";
    }

输出：

    katakana characters ヒラガナ are ひらがな in hiragana

### 参阅

wctrans | 在当前 C 本地环境中查找字符映射类别 (函数)