Zeichenklassifizierung

8

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?

    
Ixanezis 30.06.2014, 07:34
quelle

1 Antwort

3

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).

    
James Kanze 30.06.2014 09:46
quelle

Tags und Links