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

时间:2014-01-07 21:55:48

标签: c++ c posix locale

是否存在任何类型的窄字符函数,例如iswctype()用于宽字符?

更新

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

我实际上正在实施std::ctype<char>方面,因此我无法使用std::regex_traits::isctype()本身取决于std::ctype<char>::is()

请建议使用POSIX或C99功能。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

POSIX says,对于扩展字符类,

  

charclass-name 可以用作wctype()函数的属性参数,正则表达式和shell模式匹配括号表达式,以及tr命令

相应地,

the POSIX regex page

  

另外,形式的字符类表达式:

     

[:name:]

     

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

因此,要在窄字符语言环境中达到扩展分类,唯一符合POSIX的方法似乎是POSIX正则表达式类,就像在C ++中使用它的唯一方法一样,已经提到{{1 }}

也许你最好进入特定于平台的API,从而实现这些功能(在可访问的地方)。

PS:也许更实际的方法是拨打std::regex_traits::isctypebtowc。一个对一个窄字符及其加宽形式进行不同分类的语言环境至少可以说是个问题。

答案 2 :(得分:-3)

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