std:: ctype <char>
|
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.
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) |
|
|
[static]
|
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) |