iswctype()函数是否有窄字符版本

Is there narrow characters version of iswctype() function?

本文关键字:字符 版本 是否 函数 iswctype      更新时间:2023-10-16

有没有像iswctype()那样的窄字符函数?

更新

我没有意识到有std::regex_traits::isctype(),否则我会让这个问题更好地解释情况:

我实际上是在实现std::ctype<char>方面本身,所以我不能使用std::regex_traits::isctype(),因为它本身依赖于std::ctype<char>::is()

请建议使用POSIX或C99函数。

POSIX表示,对于扩展字符类,

charclass名称可以用作wctype()函数的属性参数、正则表达式和shell模式匹配括号表达式中的属性参数,也可以由tr命令使用。

和POSIX regex页面,相应地,说

此外,字符类表达式的形式为:

[:name:]

在那些name关键字在LC_CTYPE类别中被赋予charclass定义的区域设置中被识别。

因此,要在窄字符区域设置中实现扩展分类,唯一符合POSIX的方法似乎是POSIX regex类,就像在C++中实现它的唯一方法是已经提到的std::regex_traits::isctype一样。

也许您最好接触特定于平台的API,根据这些功能的实现(在可访问的地方)。

PS:也许更实用的方法是只调用btowciswctype。至少可以说,对窄字符及其加宽形式进行不同分类的区域设置是值得怀疑的。

标准正则表达式库提供了一个名为std::regex_traits::isctype的方法。请注意,它使用了std::regex_traits,这是一个C++11构造。

它们是在C中的头<ctype.h>或C++中的<cctype>中声明的函数,包括isdigit、isalpha等