Die einfache Frage noch einmal: Mit std::string
, bestimmen Sie, welche seiner Zeichen Ziffern, Symbole, Leerzeichen usw. in Bezug auf die Sprache und regionale Einstellungen des Benutzers (Gebietsschema) sind.
Ich habe es geschafft, die Zeichenfolge in eine Reihe von Zeichen aufzuteilen, indem ich verwende Bound-Locale-Boundary-Analyse-Tool :
%Vor% Ich sehe aber auch keine Möglichkeit zu bestimmen, ob ch
eine Ziffer oder ein Symbol oder irgendetwas anderes ist.
Es gibt Boost-String-Klassifikationsalgorithmen , aber diese scheinen nicht zu arbeiten mit .. was auch immer *segment_index::iterator
ist.
Ich kann auch std::isalpha(std::locale)
nicht anwenden, da ich nicht sicher bin, ob es möglich ist, eine Conversion durchzuführen das Boost-Segment in ein char
oder wchar_t
.
Gibt es eine gute Möglichkeit, Symbole zu klassifizieren?
Es gibt eine Reihe von Funktionen und Objekten, die dies unterstützen
<locale>
aber ... Der Beispieltext, den du gibst, sieht wie UTF-8 aus,
Das ist eine Multibyte-Codierung, und die Funktionen in <locale>
nicht mit Multibyte-Kodierungen arbeiten.
Ich würde vorschlagen, dass Sie die ICU-Bibliothek erhalten und verwenden. Unter anderem
Dinge, es ermöglicht das Testen für alle Eigenschaften in definiert
die Unicode-Zeichendatenbank. Es hat auch Makros oder Funktionen
zum Iterieren über einen String (oder zumindest ein Array von char
),
Extrahieren eines UTF_32-Codepunkts zu einer Zeit (was du würdest)
möchte testen).