#C 语言标准库函数 wctrans
/*********************************************
* @brief 获取宽字符映射转换规则
* @param ch 要转换的宽字符
* @param desc 映射规则
* @return 转换后的宽字符
********************************************/
wctrans_t wctrans(const char* str);
说明
将宽字符 ch 按照区域设置进行映射转换。
参数
str- 字符串表示的转换规则,例如:"toupper"- 转换为大写字母"tolower"- 转换为小写字母"tojhira"- 转换为平假名(需要日语支持)"tojkata"- 转换为片假名
返回值
- 成功时返回转换后的字符
- 失败时返回原本的字符
#示例
#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)