Ich habe eine Unicode-Zeichenfolge bestehend aus Buchstaben, Ziffern und Satzzeichen. Kann ich Zeichen, die Ziffern und Buchstaben (nicht notwendigerweise ASCII) sind, mit einer C++ - Standardbibliothek oder Win32-API erkennen?Gibt es eine Möglichkeit, ein alphanumerisches Unicode-Symbol zu erkennen?
Antwort
iswdigit(), iswalpha() und iswalnum() sind die Funktionen, die Sie für suchen.
Prost!
Überprüfen Sie nicht einfach dasselbe wie isdigit(), isalpha(), isalnum()? Der ursprüngliche Beitrag scheint nach nicht lateinischen Ziffern und Buchstaben zu suchen. – celticminstrel
This Microsoft documentation page beschreibt "Unicode-Zeichenklassen" in regulären Ausdrücken, was sehr relevant klingt. Ich denke, die Antwort ist in der .Net-Domäne, und nicht reines Win32 C++, aber vielleicht können Sie etwas ausgraben.
Link führt zu Regex-Syntaxreferenz. – n0rd
Ich empfehle die ICU-Bibliothek. Es verfügt über alle Unicode-Daten sowie über eine anständige Unicode-String-Klasse für C++.
Eine weitere Option ist der Win32-API-Aufruf GetStringTypeW()
Das sieht aus wie das richtige zu verwenden. –
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
Hat mein Beitrag, den Sie mit den notwendigen Informationen zur Verfügung stellen? – ralphtheninja