国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > wctrans 以获得更好的体验。

# C 语言标准库函数 wctrans

在头文件 wctype.h 中定义。
/*********************************************
 * @brief 获取宽字符映射转换规则
 * @param ch 要转换的宽字符
 * @param desc 映射规则
 * @return 转换后的宽字符
 ********************************************/
wctrans_t wctrans(const char* str);

!subtitle:说明

将宽字符 ch 按照区域设置进行映射转换。

!subtitle:参数

  • str - 字符串表示的转换规则,例如:

    • "toupper" - 转换为大写字母

    • "tolower" - 转换为小写字母

    • "tojhira" - 转换为平假名(需要日语支持)

    • "tojkata" - 转换为片假名

!subtitle:返回值

  • 成功时返回转换后的字符

  • 失败时返回原本的字符

# 示例

#include <stdio.h>
#include <wctype.h>
#include <wchar.h>
#include <locale.h>

int main() {
    if (setlocale(LC_CTYPE, "ja_JP.UTF-8") == NULL) {
        printf("无法设置locale\n");
        return 1;
    }

    wchar_t from[] = L"はつねミク";                 // 片假名
    wchar_t hiragana[64] = {0};                     // 平假名
    wchar_t katakana[64] = {0};                     // 片假名

    wctrans_t tojhira = wctrans("tojhira");
    wctrans_t tojkata = wctrans("tojkata");

    for (size_t i = 0; i < wcslen(from); i += 1) {
        hiragana[i] = towctrans(from[i], tojhira);       // 转换为平假名
        katakana[i] = towctrans(hiragana[i], tojkata);   // 转换回片假名
    }

    wprintf(L"%ls 的平假名是 %ls\n", from, hiragana);
    wprintf(L"%ls 的片假名是 %ls\n", hiragana, katakana);

    return 0;
}

运行结果:

はつねミク 的平假名是 はつねみく
はつねみく 的片假名是 ハツネミク
  • はつね 本就是平假名,所以第一次转换时没有改变

# 相关阅读

命令 说明
towctrans 对宽字符进行映射转换

# 推荐阅读

# 参考标准

  • C23 standard (ISO/IEC 9899:2024):

    • 7.30.3.2.2 The wctrans function (p: TBD)

  • C17 standard (ISO/IEC 9899:2018):

    • 7.30.3.2.2 The wctrans function (p: TBD)

  • C11 standard (ISO/IEC 9899:2011):

    • 7.30.3.2.2 The wctrans function (p: 454)

  • C99 standard (ISO/IEC 9899:1999):

    • 7.25.3.2,2 The wctrans function (p: 400)

本文 更新于: 2026-03-06 09:52:25 创建于: 2026-03-06 09:52:25