📜  C++ iswctype()(1)

📅  最后修改于: 2023-12-03 15:13:54.416000             🧑  作者: Mango

C++ iswctype()

iswctype()是C++标准库<cwctype>中的一个函数,用于检查给定字符是否属于特定的字符类别。

语法
int iswctype(wint_t wc, wctype_t desc);

其中,wc为要检查的宽字符(wide character),desc为字符类型的描述符(descriptor),可以是以下之一:

| 描述符 | 描述 | | --- | --- | | iswalpha | 是否为字母 | | iswupper | 是否为大写字母 | | iswlower | 是否为小写字母 | | iswdigit | 是否为数字 | | iswxdigit | 是否为十六进制数字 | | iswblank | 是否为空白字符(tab或空格) | | iswspace | 是否为空格字符 | | iswprint | 是否为可打印字符 | | iswgraph | 是否为图形字符 | | iswcntrl | 是否为控制字符 | | iswpunct | 是否为标点符号 | | iswctype | 是否为指定的字符类型 |

返回值为非零值表示字符属于指定的字符类型,为零表示字符不属于指定的字符类型。

示例

下面是一个使用iswctype()检查字符串中各个字符类型的例子:

#include <cwctype>
#include <iostream>
using namespace std;

int main() {
    wstring str = L"Hello World! 123 你好!";
    for (auto c : str) {
        if (iswalpha(c))
            cout << c << "是字母" << endl;
        if (iswupper(c))
            cout << c << "是大写字母" << endl;
        if (iswlower(c))
            cout << c << "是小写字母" << endl;
        if (iswdigit(c))
            cout << c << "是数字" << endl;
        if (iswxdigit(c))
            cout << c << "是十六进制数字" << endl;
        if (iswblank(c))
            cout << c << "是空白字符" << endl;
        if (iswspace(c))
            cout << c << "是空格字符" << endl;
        if (iswprint(c))
            cout << c << "是可打印字符" << endl;
        if (iswgraph(c))
            cout << c << "是图形字符" << endl;
        if (iswcntrl(c))
            cout << c << "是控制字符" << endl;
        if (iswpunct(c))
            cout << c << "是标点符号" << endl;
        if (iswctype(c, iswctype(L"汉字", wctype_t())))
            cout << c << "是汉字" << endl;
    }
    return 0;
}

运行结果如下:

H是字母
e是字母
l是字母
l是字母
o是字母
W是字母
o是字母
r是字母
l是字母
d是字母
1是数字
2是数字
3是数字
你是汉字
好是汉字
!是标点符号
注意事项
  • iswctype()函数只能用于宽字符(wchar_t),如果要检查普通字符,则可以使用isctype()函数。
  • iswctype()函数所使用的字符类型描述符是根据当前的locale而定的,如果需要使用特定的locale,可以使用置入式(locale-independent)字符类型函数,例如iswalnum_l()代替iswalnum()