Namespaces
Variants

std:: ctype <char>

From cppreference.net
Definido en el encabezado <locale>
template <>
class ctype < char > ;

Esta especialización de std::ctype encapsula las características de clasificación de caracteres para el tipo char . A diferencia de std::ctype de propósito general, que utiliza funciones virtuales, esta especialización utiliza búsqueda en tablas para clasificar caracteres (lo que generalmente es más rápido).

La clase base std::ctype < char > implementa clasificación de caracteres equivalente al locale mínimo "C". Las reglas de clasificación pueden extenderse o modificarse si se construye con un argumento de tabla de clasificación no predeterminado, si se construye como std:: ctype_byname < char > o como una faceta derivada definida por el usuario. Todas las funciones de entrada formateada de std::istream están obligadas a utilizar std::ctype < char > para la clasificación de caracteres durante el análisis de entrada.

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

Diagrama de herencia

Contenidos

Tipos anidados

Tipo Definición
char_type char

Miembros de datos

Miembro Descripción
std::locale::id id [static] el identificador del facet
const std:: size_t table_size [static] tamaño de la tabla de clasificación, al menos 256

Funciones miembro

construye un nuevo facet ctype < char >
(función miembro pública)
destruye un facet ctype < char >
(función miembro protegida)
obtiene la tabla de clasificación de caracteres
(función miembro pública)
obtiene la tabla de clasificación de caracteres de la localización "C"
(función miembro estática pública)
clasifica un carácter o una secuencia de caracteres, usando la tabla de clasificación
(función miembro pública)
localiza el primer carácter en una secuencia que cumple con la clasificación dada, usando la tabla de clasificación
(función miembro pública)
localiza el primer carácter en una secuencia que no cumple con la clasificación dada, usando la tabla de clasificación
(función miembro pública)
invoca do_toupper
(función miembro pública de std::ctype<CharT> )
invoca do_tolower
(función miembro pública de std::ctype<CharT> )
invoca do_widen
(función miembro pública de std::ctype<CharT> )
invoca do_narrow
(función miembro pública de std::ctype<CharT> )

Funciones miembro protegidas

[virtual]
convierte un carácter o caracteres a mayúsculas
(función miembro protegida virtual de std::ctype<CharT> )
[virtual]
convierte un carácter o caracteres a minúsculas
(función miembro protegida virtual de std::ctype<CharT> )
[virtual]
convierte un carácter o caracteres de char a CharT
(función miembro protegida virtual de std::ctype<CharT> )
[virtual]
convierte un carácter o caracteres de CharT a char
(función miembro protegida virtual de std::ctype<CharT> )

Heredado de std:: ctype_base

Tipos anidados

Tipo Definición
mask tipo no especificado BitmaskType (enumeración, tipo entero, o bitset)

Constantes miembro

space
[static]
el valor de mask que identifica la clasificación de caracteres de espacio en blanco
(constante miembro pública estática)
print
[static]
el valor de mask que identifica la clasificación de caracteres imprimibles
(constante miembro pública estática)
cntrl
[static]
el valor de mask que identifica la clasificación de caracteres de control
(constante miembro pública estática)
upper
[static]
el valor de mask que identifica la clasificación de caracteres en mayúsculas
(constante miembro pública estática)
lower
[static]
el valor de mask que identifica la clasificación de caracteres en minúsculas
(constante miembro pública estática)
alpha
[static]
el valor de mask que identifica la clasificación de caracteres alfabéticos
(constante miembro pública estática)
digit
[static]
el valor de mask que identifica la clasificación de caracteres dígito
(constante miembro pública estática)
punct
[static]
el valor de mask que identifica la clasificación de caracteres de puntuación
(constante miembro pública estática)
xdigit
[static]
el valor de mask que identifica la clasificación de caracteres dígito hexadecimal
(constante miembro pública estática)
blank
[static] (C++11)
el valor de mask que identifica la clasificación de caracteres en blanco
(constante miembro pública estática)
alnum
[static]
alpha | digit
(constante miembro pública estática)
graph
[static]
alnum | punct
(constante miembro pública estática)

Ejemplo

El siguiente ejemplo demuestra la modificación de ctype < char > para tokenizar valores separados por comas:

#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';
}

Salida:

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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 695 C++98 table() y classic_table() eran funciones miembro protegidas se hicieron públicas

Véase también

define tablas de clasificación de caracteres
(plantilla de clase)
define categorías de clasificación de caracteres
(clase)
representa el std::ctype proporcionado por el sistema para la configuración regional nombrada
(plantilla de clase)