有没有办法检测字母数字Unicode符号?

时间:2009-05-29 11:12:51

标签: c++ string winapi unicode

我有一个由字母,数字和标点符号组成的Unicode字符串。我可以使用C ++标准库或Win32 API检测数字和字母(不一定是ASCII)的字符吗?

5 个答案:

答案 0 :(得分:12)

iswdigit() iswalpha() iswalnum()是您要查找的功能。

干杯!

答案 1 :(得分:5)

另一个选项是Win32 API调用GetStringTypeW()

答案 2 :(得分:4)

我推荐ICU库。它拥有所有Unicode数据,以及适合C ++的Unicode字符串类。

答案 3 :(得分:2)

This Microsoft documentation page在正则表达式中描述了“Unicode字符类”,这听起来非常相关。我认为答案是在.Net领域,而不是纯粹的Win32 C ++,但也许你可以挖掘一些东西。

答案 4 :(得分:1)

Private Declare Function GetStringTypeW Lib "Kernel32" (ByVal InfoType As Long, Text As Byte, ByVal Length As Long, Types As Integer) As Long
...
Dim S As String, B() As Byte, C() As Integer, L as Long
L = Len(S)
ReDim C(1 To L)
B = S
If GetStringTypeW(1, B(0), L, C(1)) Then
    'Character classes are in C.
Else
    'Something went wrong. Deal with it or call Err.Raise.
End If