C 库 - wctype() 函数

❮ C 标准库 - <wctype.h>


C wctype 库中的 wctype() 函数用于获取宽字符类型的 desc(描述符)。此描述符可与"iswctype"函数一起使用,以检查给定的宽字符是否属于特定的字符类。

此函数可以保存以下"str"值 -

  • alnum - 标识 iswalnum 使用的类别
  • alpha - 标识 iswalpha 使用的类别
  • blank - 标识 iswblank (C99) 使用的类别
  • cntrl - 标识 iswcntrl 使用的类别
  • digit - 标识 iswdigit 使用的类别
  • graph - 标识 iswgraph 使用的类别
  • lower - 标识iswlower
  • print − 标识 iswprint 使用的类别
  • space − 标识 iswspace 使用的类别
  • upper − 标识 iswupper 使用的类别
  • xdigit − 标识 iswxdigit 使用的类别

语法

以下是 wctype() 函数的 C 库语法 −

wctype_t wctype( const char* str );

参数

此函数接受一个参数 -

  • str - 这是一个指向"const char*"类型字符串的指针,该字符串指定要获取描述符的字符类的名称。

返回值

此函数返回一个 wctype_t 类型的值,该值是指定字符类的描述符。

示例 1

以下是一个简单的 C 程序,用于演示如何使用 wctype() 获取描述符。

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

int main() {
    // 待检查的宽字符
    wchar_t wc = L'A';
    
    // 字母字符描述符
    wctype_t desc = wctype("alpha");
    
    // 使用 iswctype 检查字符是否具有 desc 描述的属性
   if (iswctype(wc, desc)) {
      wprintf(L"%lc is an alphabetic character.
", wc);
   } else {
      wprintf(L"%lc is not an alphabetic character.
", wc);
   }
   
   return 0;
}

输出

以下是输出 -

A is an alphabetic character.

示例 2

让我们创建另一个 C 语言示例,并使用 wctype() 创建一个字母数字字符的 desc(描述符)。

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

int main() {
    // 待检查的宽字符串
    wchar_t str[] = L"tutorialspoint12";
    
    // 字母数字字符的描述符
    wctype_t desc = wctype("alnum");
    
    // 循环遍历字符串中的每个字符
    for (size_t i = 0; str[i] != L'\0'; ++i) {
      // 检查字符是否为字母数字
      if (iswctype(str[i], desc)) {
         wprintf(L"%lc 是字母数字字符。
", str[i]);
      } else {
         wprintf(L"%lc 不是字母数字字符。
", str[i]);
      }
   }
   return 0;
}

输出

以下是输出 -

t 是字母数字字符。
u 是字母数字字符。
t 是字母数字字符。
o 是字母数字字符。
r 是字母数字字符。
i 是字母数字字符。
a 是字母数字字符。
l 是字母数字字符。
s 是字母数字字符。
p 是字母数字字符。
o 是字母数字字符。
i 是字母数字字符。
n 是字母数字字符。
t 是字母数字字符。
1 是字母数字字符。
2 是字母数字字符。

示例 3

以下示例为标点符号创建 desc(描述符)。然后我们检查 wc 是否为标点符号。

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

int main() 
{ 
   wchar_t wc = L'#';
   // 检查字符是否为标点符号
   if (iswctype(wc, wctype("punct"))) 
      wprintf(L"%lc is a punctuation
", wc); 
   else
      wprintf(L"%lc is not a punctuation
", wc);
   return 0; 
}

输出

以下是输出 -

# is a punctuation

❮ C 标准库 - <wctype.h>