在 Oracle Solaris 中进行应用程序国际化和本地化

退出打印视图

更新时间: 2014 年 7 月
 
 

宽字符分类函数

以下函数用于宽字符分类,返回非零值为 TRUE,返回 0 则为 FALSE。这些函数根据当前语言环境的 LC_CTYPE 类别中定义的命名字符类(例如 alphalowerjkana)检查给定宽字符。因此,这些函数是locale sensitive

iswalpha()

测试字母宽字符

iswalnum()

测试字母数字宽字符

iswascii()

测试宽字符是否表示 7 位 US-ASCII 字符

iswblank()

测试空白宽字符

iswcntrl()

测试控制宽字符

iswdigit()

测试十进制数字宽字符

iswgraph()

测试可见宽字符

iswlower()

测试小写字母宽字符

iswprint()

测试可列显宽字符

iswpunct()

测试标点宽符号

iswspace()

测试空格宽字符

iswupper()

测试大写字母宽字符

iswxdigit()

测试十六进制数字宽字符

isenglish()

测试表示英文语言字符的宽字符,不包括 US-ASCII 字符

isideogram()

测试表示象形语言字符的宽字符,不包括 US-ASCII 字符

isnumber()

测试表示数字的宽字符,不包括 US-ASCII 字符

isphonogram()

测试表示语音语言字符的宽字符,不包括 US-ASCII 字符

isspecial()

测试表示特殊语言字符的宽字符,不包括 US-ASCII 字符

所有语言环境中都定义有以下字符类:

  • alnum

  • alpha

  • blank

  • cntrl

  • digit

  • graph

  • lower

  • print

  • punct

  • space

  • upper

  • xdigit

isenglish()isideogram()isnumber()isphonogram()isspecial() 是传统 Oracle Solaris 特定的宽字符分类函数。仅在以下亚洲语言环境中定义这些函数的字符类:ko_KR.EUCzh_CN.EUCzh_CN.GBKzh_CN.GB18030zh_HK.BIG5HKzh_TW.BIG5zh_TW.EUC 及其变体。当在其他语言环境(包括 Unicode 语言环境)中使用这些函数时,返回值将始终为 false。

您可以通过使用以下函数以常规方式查询特定字符类:

wctype()

定义字符类

iswctype()

测试指定类的字符

示例 2-11  查询宽字符的字符类

在以下示例中,调用 iswctype()wctype() 函数以检查给定 Unicode 字符是否属于 jhira 字符类。jhira 字符类来自于日语平假名书脚本。

  wint_t  wc;
  int     ret;

  setlocale(LC_ALL, "ja_JP.UTF-8");

  /* "\xe3\x81\xba" is UTF-8 for HIRAGANA LETTER PE */
  ret = mbtowc(&wc, "\xe3\x81\xba", 3);
  if (ret == (size_t)-1) {
          /* Invalid character sequence. */
          :
  }

  if (iswctype(wc, wctype("jhira"))) {
          wprintf(L"'%c' is a hiragana character.\n", wc);
  }

此示例将生成以下输出:

ぺ 是平假名字符。