Namespaces
Variants

std:: ctype

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

La clase ctype encapsula las características de clasificación de caracteres. Todas las operaciones de entrada de flujo realizadas a través de std:: basic_istream < CharT > utilizan el std::ctype<CharT> de la configuración regional imbucida en el flujo para identificar caracteres de espacio en blanco para la tokenización de entrada. Las operaciones de salida de flujo aplican std::ctype<CharT>::widen() a los argumentos de caracteres estrechos antes de la salida.

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

Diagrama de herencia

Contenidos

Especializaciones

La biblioteca estándar garantiza proporcionar las siguientes especializaciones (están requeridas para ser implementadas por cualquier objeto locale ):

Definido en el encabezado <locale>
std::ctype<char> proporciona equivalentes de caracteres estrechos de la clasificación mínima de la configuración regional "C". Esta especialización utiliza búsqueda en tabla para la clasificación de caracteres
std :: ctype < wchar_t > proporciona clasificación de caracteres anchos apropiada para el conjunto de caracteres nativo

Tipos anidados

Tipo Definición
char_type CharT

Miembros de datos

Miembro Descripción
std::locale::id id [static] el identificador del facet

Funciones miembro

construye un nuevo facet ctype
(función miembro pública)
destruye un facet ctype
(función miembro protegida)
invoca do_is
(función miembro pública)
invoca do_scan_is
(función miembro pública)
invoca do_scan_not
(función miembro pública)
invoca do_toupper
(función miembro pública)
invoca do_tolower
(función miembro pública)
invoca do_widen
(función miembro pública)
invoca do_narrow
(función miembro pública)

Funciones miembro protegidas

[virtual]
clasifica un carácter o una secuencia de caracteres
(función miembro protegida virtual)
[virtual]
localiza el primer carácter en una secuencia que cumple con la clasificación dada
(función miembro protegida virtual)
[virtual]
localiza el primer carácter en una secuencia que no cumple con la clasificación dada
(función miembro protegida virtual)
[virtual]
convierte un carácter o caracteres a mayúsculas
(función miembro protegida virtual)
[virtual]
convierte un carácter o caracteres a minúsculas
(función miembro protegida virtual)
[virtual]
convierte un carácter o caracteres de char a CharT
(función miembro protegida virtual)
[virtual]
convierte un carácter o caracteres de CharT a char
(función miembro protegida virtual)

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 un ctype diferente a ctype<char> para tokenizar un archivo CSV:

#include <iostream>
#include <locale>
#include <sstream>
struct csv_whitespace : std::ctype<wchar_t>
{
    bool do_is(mask m, char_type c) const
    {
        if ((m & space) && c == L' ')
            return false; // space will NOT be classified as whitespace
        if ((m & space) && c == L',')
            return true; // comma will be classified as whitespace
        return ctype::do_is(m, c); // leave the rest to the base class
    }
};
int main()
{
    std::wstring in = L"Column 1,Column 2,Column 3\n123,456,789";
    std::wstring token;
    std::wcout << "default locale:\n";
    std::wistringstream s1(in);
    while (s1 >> token)
        std::wcout << "  " << token << '\n';
    std::wcout << "locale with modified ctype:\n";
    std::wistringstream s2(in);
    csv_whitespace* my_ws = new csv_whitespace;
    s2.imbue(std::locale(s2.getloc(), my_ws));
    while (s2 >> token)
        std::wcout << "  " << 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

Véase también

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