📅  最后修改于: 2023-12-03 15:13:54.416000             🧑  作者: Mango
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()
。