2414

12 分钟

#C 语言标准库函数 towctrans

/********************************************* * @brief 将宽字符按照区域设置进行映射转换 * @param ch 要转换的宽字符 * @param desc 映射规则 * @return 转换后的宽字符 ********************************************/ wint_t towctrans(wint_t wc, wctrans_t desc);

说明

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

参数

  • ch - 要转换的宽字符
  • desc - 转换规则,通过 wctrans 获取

返回值

  • 成功时返回转换后的字符
  • 失败时返回原本的字符

#示例

#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; }

运行结果:

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

#相关阅读

命令说明
wctrans获取映射转换规则

#推荐阅读

#参考标准

  • C23 standard (ISO/IEC 9899:2024):
    • 7.4.2.1 The tolower function (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
    • 7.4.2.1 The tolower function (p: 147)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.4.2.1 The tolower function (p: 203)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.4.2.1 The tolower function (p: 184)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.3.2.1 The tolower function

创建于 2025/12/12

更新于 2025/12/12