Namespaces
Variants

std:: ctype <char>

From cppreference.net
Definiert in Header <locale>
template <>
class ctype < char > ;

Diese Spezialisierung von std::ctype kapselt Zeichenklassifizierungsfunktionen für den Typ char . Im Gegensatz zur allgemeinen std::ctype , die virtuelle Funktionen verwendet, nutzt diese Spezialisierung Tabellennachschlageverfahren zur Zeichenklassifizierung (was in der Regel schneller ist).

Die Basisklasse std::ctype < char > implementiert eine Zeichenklassifizierung, die dem minimalen "C"-Locale entspricht. Die Klassifizierungsregeln können erweitert oder modifiziert werden, wenn mit einem nicht standardmäßigen Klassifizierungstabellenargument konstruiert, wenn als std:: ctype_byname < char > oder als benutzerdefinierte abgeleitete Facette konstruiert. Alle std::istream formatierten Eingabefunktionen sind verpflichtet, std::ctype < char > für die Zeichenklassierung während der Eingabeparsierung zu verwenden.

cpp/locale/ctype base cpp/locale/locale/facet std-ctype char-inheritance.svg

Vererbungsdiagramm

Inhaltsverzeichnis

Verschachtelte Typen

Typ Definition
char_type char

Datenmitglieder

Mitglied Beschreibung
std::locale::id id [static] der Identifikator des Facet
const std:: size_t table_size [static] Größe der Klassifikationstabelle, mindestens 256

Memberfunktionen

Konstruiert ein neues ctype < char > Facet
(öffentliche Elementfunktion)
zerstört ein ctype < char > Facet
(geschützte Elementfunktion)
erhält die Zeichenklassifikationstabelle
(öffentliche Elementfunktion)
erhält die "C"-Locale-Zeichenklassifikationstabelle
(öffentliche statische Elementfunktion)
klassifiziert ein Zeichen oder eine Zeichensequenz unter Verwendung der Klassifikationstabelle
(öffentliche Elementfunktion)
findet das erste Zeichen in einer Sequenz, das der gegebenen Klassifikation entspricht, unter Verwendung der Klassifikationstabelle
(öffentliche Elementfunktion)
findet das erste Zeichen in einer Sequenz, das die gegebene Klassifikation nicht erfüllt, unter Verwendung der Klassifikationstabelle
(öffentliche Elementfunktion)
ruft do_toupper auf
(öffentliche Elementfunktion von std::ctype<CharT> )
ruft do_tolower auf
(öffentliche Elementfunktion von std::ctype<CharT> )
ruft do_widen auf
(öffentliche Elementfunktion von std::ctype<CharT> )
ruft do_narrow auf
(öffentliche Elementfunktion von std::ctype<CharT> )

Geschützte Memberfunktionen

[virtual]
wandelt ein Zeichen oder Zeichen in Großbuchstaben um
(virtuelle geschützte Memberfunktion von std::ctype<CharT> )
[virtual]
wandelt ein Zeichen oder Zeichen in Kleinbuchstaben um
(virtuelle geschützte Memberfunktion von std::ctype<CharT> )
[virtual]
konvertiert ein Zeichen oder Zeichen von char zu CharT
(virtuelle geschützte Memberfunktion von std::ctype<CharT> )
[virtual]
konvertiert ein Zeichen oder Zeichen von CharT zu char
(virtuelle geschützte Memberfunktion von std::ctype<CharT> )

Geerbt von std:: ctype_base

Geschachtelte Typen

Typ Definition
mask nicht spezifizierter BitmaskType Typ (Aufzählung, Ganzzahltyp oder Bitset)

Member-Konstanten

space
[static]
der Wert von mask zur Identifikation der Leerzeichen-Zeichenklassifikation
(öffentliche statische Member-Konstante)
print
[static]
der Wert von mask zur Identifikation der druckbaren Zeichenklassifikation
(öffentliche statische Member-Konstante)
cntrl
[static]
der Wert von mask zur Identifikation der Steuerzeichen-Klassifikation
(öffentliche statische Member-Konstante)
upper
[static]
der Wert von mask zur Identifikation der Großbuchstaben-Zeichenklassifikation
(öffentliche statische Member-Konstante)
lower
[static]
der Wert von mask zur Identifikation der Kleinbuchstaben-Zeichenklassifikation
(öffentliche statische Member-Konstante)
alpha
[static]
der Wert von mask zur Identifikation der alphabetischen Zeichenklassifikation
(öffentliche statische Member-Konstante)
digit
[static]
der Wert von mask zur Identifikation der Ziffern-Zeichenklassifikation
(öffentliche statische Member-Konstante)
punct
[static]
der Wert von mask zur Identifikation der Interpunktions-Zeichenklassifikation
(öffentliche statische Member-Konstante)
xdigit
[static]
der Wert von mask zur Identifikation der Hexadezimalziffern-Zeichenklassifikation
(öffentliche statische Member-Konstante)
blank
[static] (C++11)
der Wert von mask zur Identifikation der Leerstellen-Zeichenklassifikation
(öffentliche statische Member-Konstante)
alnum
[static]
alpha | digit
(öffentliche statische Member-Konstante)
graph
[static]
alnum | punct
(öffentliche statische Member-Konstante)

Beispiel

Das folgende Beispiel demonstriert die Modifikation von ctype < char > zur Tokenisierung kommagetrennter Werte:

#include <cstddef>
#include <iostream>
#include <locale>
#include <sstream>
#include <vector>
// This ctype facet classifies commas and endlines as whitespace
struct csv_whitespace : std::ctype<char>
{
    static const mask* make_table()
    {
        // make a copy of the "C" locale table
        static std::vector<mask> v(classic_table(), classic_table() + table_size);
        v[','] |=  space; // comma will be classified as whitespace
        v[' '] &= ~space; // space will not be classified as whitespace
        return &v[0];
    }
    csv_whitespace(std::size_t refs = 0) : ctype(make_table(), false, refs) {}
};
int main()
{
    std::string in = "Column 1,Column 2,Column 3\n123,456,789";
    std::string token;
    std::cout << "Default locale:\n";
    std::istringstream s1(in);
    while (s1 >> token)
        std::cout << "  " << token << '\n';
    std::cout << "Locale with modified ctype:\n";
    std::istringstream s2(in);
    s2.imbue(std::locale(s2.getloc(), new csv_whitespace));
    while (s2 >> token)
        std::cout << "  " << token << '\n';
}

Ausgabe:

Default locale:
  Column
  1,Column
  2,Column
  3
  123,456,789
Locale with modified ctype:
  Column 1
  Column 2
  Column 3
  123
  456
  789

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 695 C++98 table() und classic_table() waren geschützte Memberfunktionen wurden öffentlich gemacht

Siehe auch

definiert Zeichenklassifizierungstabellen
(Klassentemplate)
definiert Zeichenklassifizierungskategorien
(Klasse)
repräsentiert die systemspezifische std::ctype für die benannte Locale
(Klassentemplate)