Clase ctype
Clase que proporciona una faceta que se emplea para clasificar los caracteres, pasar de mayúsculas a minúsculas y convertir entre el juego de caracteres nativo y el que usa la configuración regional.
Sintaxis
template <class CharType>
class ctype : public ctype_base;
Parámetros
CharType
Tipo usado dentro de un programa para codificar caracteres.
Comentarios
Como ocurre con cualquier faceta de configuración regional, el identificador de objeto estático tiene un valor almacenado inicial de cero. El primer intento de acceso a su valor almacenado almacena un valor positivo único en id
. Se proporciona a los criterios de clasificación un tipo de máscara de bits anidado en el ctype_base de la clase base.
La biblioteca estándar de C++ define dos especializaciones explícitas de esta plantilla de clase:
ctype<char>
, una especialización explícita cuyas diferencias se describen por separado. Para obtener más información, consulte lactype<char>
clase.ctype<wchar_t>
, que trata los elementos como caracteres anchos.
Otras especializaciones de plantilla de clase ctype<CharType>
:
Convierte un valor ch de tipo CharType en un valor de tipo
char
con la expresión(char)ch
.Convierte un valor byte de tipo
char
en un valor de tipo CharType con la expresiónCharType(byte)
.
Todas las demás operaciones se realizan sobre los valores char
igual que para la especialización explícita ctype<char>
.
Constructores
Constructor | Descripción |
---|---|
ctype | Constructor de objetos de clase ctype que actúan como facetas de configuración regional para los caracteres. |
Typedefs
Nombre de tipo | Descripción |
---|---|
char_type | Tipo que describe un carácter usado por una configuración regional. |
Funciones miembro
Función de miembro | Descripción |
---|---|
do_is | Función virtual a la que se llama para comprobar si un carácter individual tiene un atributo determinado, o para clasificar los atributos de cada carácter de un intervalo y almacenarlos en una matriz. |
do_narrow | Función virtual a la que se llama para convertir un carácter de tipo CharType usado por una configuración regional en el carácter correspondiente de tipo char del juego de caracteres nativo. |
do_scan_is | Función virtual a la que se llama para buscar el primer carácter de un intervalo que coincide con una máscara especificada. |
do_scan_not | Función virtual a la que se llama para buscar el primer carácter de un intervalo que no coincide con una máscara especificada. |
do_tolower | Función virtual a la que se llama para convertir a minúsculas un carácter o un intervalo de caracteres. |
do_toupper | Función virtual a la que se llama para convertir a mayúsculas un carácter o un intervalo de caracteres. |
do_widen | Función virtual a la que se llama para convertir un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional. |
is | Comprueba si un carácter individual tiene un atributo determinado, o clasifica los atributos de cada carácter de un intervalo y los almacena en una matriz. |
narrow | Convierte un carácter de tipo CharType usado por una configuración regional en el carácter correspondiente de tipo char del juego de caracteres nativo. |
scan_is | Busca el primer carácter de un intervalo que coincide con una máscara especificada. |
scan_not | Busca el primer carácter de un intervalo que no coincide con una máscara especificada. |
tolower | Convierte a minúsculas un carácter o un intervalo de caracteres. |
toupper | Convierte a mayúsculas un carácter o un intervalo de caracteres. |
widen | Convierte un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional. |
Requisitos
Encabezado:<locale>
Espacio de nombres: std
ctype::char_type
Tipo que describe un carácter usado por una configuración regional.
typedef CharType char_type;
Comentarios
El tipo es un sinónimo del parámetro de plantilla CharType.
Ejemplo
Vea la función miembro widen para obtener un ejemplo que usa char_type
como valor devuelto.
ctype::ctype
Constructor de objetos de clase ctype que actúan como facetas de configuración regional para los caracteres.
explicit ctype(size_t _Refs = 0);
Parámetros
_Refs
Valor entero que se usa para especificar el tipo de administración de memoria del objeto.
Comentarios
Los valores posibles del parámetro _Refs y su importancia son:
0: la vigencia del objeto se administra mediante las configuraciones regionales que lo contienen.
1: la vigencia del objeto se debe administrar de manera manual.
> 1: estos valores no están definidos.
No es posible mostrar ejemplos directos, porque el destructor está protegido.
El constructor inicializa su objeto base locale::facet
con locale::facet( _Refs
).
ctype::d o_is
Función virtual a la que se llama para comprobar si un carácter individual tiene un atributo determinado, o para clasificar los atributos de cada carácter de un intervalo y almacenarlos en una matriz.
virtual bool do_is(
mask maskVal,
CharType ch) const;
virtual const CharType *do_is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parámetros
maskVal
El valor de máscara para el que se probará el carácter.
Ch
Los caracteres cuyos atributos se van a probar.
first
Un puntero al primer carácter del intervalo de caracteres cuyos atributos se van a clasificar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo cuyos atributos se van a clasificar.
dest
Un puntero al principio de la matriz en que se van a almacenar los valores de máscara que caracterizan a los atributos de cada uno de los caracteres.
Valor devuelto
La primera función miembro devuelve un valor booleano que es true
si el carácter probado tiene el atributo descrito por el valor de máscara; false
si no puede tener el atributo.
La segunda función miembro devuelve una matriz que contiene los valores de máscara que caracterizan a los atributos de cada uno de los caracteres del intervalo.
Comentarios
La clase ctype_base, de la que deriva ctype, proporciona los valores de máscara que clasifican los atributos de los caracteres. La primera función miembro puede aceptar expresiones para su primer parámetro, que se conoce como máscaras de bits, y está formado a partir de la combinación de valores de máscara por los operadores lógicos bit a bit (|
, &
, ^
, ~
).
Ejemplo
Vea el ejemplo de is, que llama a do_is
.
ctype::d o_narrow
Función virtual a la que se llama para convertir un carácter de tipo CharType
usado por una configuración regional en el carácter correspondiente de tipo char
del juego de caracteres nativo.
virtual char do_narrow(
CharType ch,
char default = '\0') const;
virtual const CharType* do_narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Parámetros
Ch
El carácter de tipo Chartype
usado por la configuración regional que se va a convertir.
default
El valor predeterminado que asignará la función miembro a caracteres de tipo CharType
que no tienen caracteres equivalente de tipo char
.
first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.
dest
Un puntero const al primer carácter de tipo char
del intervalo de destino que almacena el intervalo de caracteres convertido.
Valor devuelto
La primera función miembro protegida devuelve el carácter nativo de tipo char que corresponde con el carácter de parámetro de tipo CharType
o default si no se ha definido ningún homólogo.
La segunda función miembro protegida devuelve un puntero al intervalo de destino de caracteres nativos convertidos a partir de caracteres de tipo CharType
.
Comentarios
La segunda función de plantilla miembro protegida almacena en dest
[ I
] el valor do_narrow
( first
[ I
, default
), para I
en el intervalo [0, last
- first
).
Ejemplo
Vea el ejemplo de narrow, que llama a do_narrow
.
ctype::d o_scan_is
Función virtual a la que se llama para buscar el primer carácter de un intervalo que coincide con una máscara especificada.
virtual const CharType *do_scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parámetros
maskVal
El valor de máscara que debe coincidir con un carácter.
first
Un puntero al primer carácter del intervalo que se va a examinar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.
Valor devuelto
Un puntero al primer carácter de un intervalo que coincide con una máscara especificada. Si no existe este valor, la función devuelve last.
Comentarios
La función miembro protegida devuelve el puntero más pequeño ptr
en el intervalo [ first
, last
) para el que do_is( maskVal
, * ptr
) es True.
Ejemplo
Vea el ejemplo de scan_is, que llama a do_scan_is
.
ctype::d o_scan_not
Función virtual a la que se llama para buscar el primer carácter de un intervalo que no coincide con una máscara especificada.
virtual const CharType *do_scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parámetros
maskVal
El valor de máscara que no debe coincidir con un carácter.
first
Un puntero al primer carácter del intervalo que se va a examinar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.
Valor devuelto
Un puntero al primer carácter de un intervalo que no coincide con una máscara especificada. Si no existe este valor, la función devuelve last.
Comentarios
La función miembro protegida devuelve el puntero más pequeño ptr
en el intervalo [ first
, last
) para el que do_is( maskVal
, * ptr
) es False.
Ejemplo
Vea el ejemplo de scan_not, que llama a do_scan_not
.
ctype::d o_tolower
Función virtual a la que se llama para convertir a minúsculas un carácter o un intervalo de caracteres.
virtual CharType do_tolower(CharType ch) const;
virtual const CharType *do_tolower(
CharType* first,
const CharType* last) const;
Parámetros
Ch
El carácter que se va a convertir en minúscula.
first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
Valor devuelto
La primera función miembro protegida devuelve la forma en minúsculas del parámetro ch. Si no hay ningún formato en minúscula, devuelve ch. La segunda función miembro protegida devuelve last.
Comentarios
La segunda función de plantilla miembro protegida reemplaza cada elemento first
[ I
], para I
en el intervalo [0, last
- first
), con do_tolower
( first
[ I
]).
Ejemplo
Vea el ejemplo de tolower, que llama a do_tolower
.
ctype::d o_toupper
Función virtual a la que se llama para convertir a mayúsculas un carácter o un intervalo de caracteres.
virtual CharType do_toupper(CharType ch) const;
virtual const CharType *do_toupper(
CharType* first,
const CharType* last) const;
Parámetros
Ch
El carácter que se va a convertir en mayúscula.
first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
Valor devuelto
La primera función miembro protegida devuelve la forma en mayúsculas del parámetro ch. Si no hay ningún formato en mayúscula, devuelve ch. La segunda función miembro protegida devuelve last.
Comentarios
La segunda función de plantilla miembro protegida reemplaza cada elemento first
[ I
], para I
en el intervalo [0, last
- first
), con do_toupper
( first
[ I
]).
Ejemplo
Vea el ejemplo de toupper, que llama a do_toupper
.
ctype::d o_widen
Función virtual a la que se llama para convertir un carácter de tipo char
del juego de caracteres nativo en el carácter correspondiente de tipo CharType
usado por una configuración regional.
virtual CharType do_widen(char byte) const;
virtual const char *do_widen(
const char* first,
const char* last,
CharType* dest) const;
Parámetros
byte
El carácter de tipo char
en el juego de caracteres nativo que se convertirá.
first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.
dest
Un puntero al primer carácter de tipo CharType
del intervalo de destino que almacena el intervalo de caracteres convertido.
Valor devuelto
La primera función miembro protegida devuelve el carácter de tipo CharType
que corresponde con el carácter de parámetro de tipo nativo char
.
La segunda función miembro protegida devuelve un puntero al intervalo de destino de caracteres de tipo CharType
usados por una configuración regional convertida a partir de caracteres nativos de tipo char
.
Comentarios
La segunda función de plantilla miembro protegida almacena en dest
[ I
] el valor do_widen
( first
[ I
]), para I
en el intervalo [0, last
- first
).
Ejemplo
Vea el ejemplo de widen, que llama a do_widen
.
ctype::is
Comprueba si un carácter individual tiene un atributo determinado, o clasifica los atributos de cada carácter de un intervalo y los almacena en una matriz.
bool is(mask maskVal, CharType ch) const;
const CharType *is(
const CharType* first,
const CharType* last,
mask* dest) const;
Parámetros
maskVal
El valor de máscara para el que se probará el carácter.
Ch
Los caracteres cuyos atributos se van a probar.
first
Un puntero al primer carácter del intervalo de caracteres cuyos atributos se van a clasificar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo cuyos atributos se van a clasificar.
dest
Un puntero al principio de la matriz en que se van a almacenar los valores de máscara que caracterizan a los atributos de cada uno de los caracteres.
Valor devuelto
La primera función miembro devuelve true
si el carácter probado tiene el atributo descrito por el valor de máscara; false
si no puede tener el atributo.
La segunda función miembro devuelve un puntero al último carácter del intervalo cuyos atributos se van a clasificar.
Comentarios
La clase ctype_base (Clase), de la que deriva ctype, proporciona los valores de máscara que clasifican los atributos de los caracteres. La primera función miembro puede aceptar expresiones para su primer parámetro, que se conoce como máscaras de bits, y está formado a partir de la combinación de valores de máscara por los operadores lógicos bit a bit (|
, &
, ^
, ~
).
Ejemplo
// ctype_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main() {
locale loc1 ( "German_Germany" ), loc2 ( "English_Australia" );
if (use_facet<ctype<char> > ( loc1 ).is( ctype_base::alpha, 'a' ))
cout << "The character 'a' in locale loc1 is alphabetic."
<< endl;
else
cout << "The character 'a' in locale loc1 is not alphabetic."
<< endl;
if (use_facet<ctype<char> > ( loc2 ).is( ctype_base::alpha, '!' ))
cout << "The character '!' in locale loc2 is alphabetic."
<< endl;
else
cout << "The character '!' in locale loc2 is not alphabetic."
<< endl;
char *string = "Hello, my name is John!";
ctype<char>::mask maskarray[30];
use_facet<ctype<char> > ( loc2 ).is(
string, string + strlen(string), maskarray );
for (unsigned int i = 0; i < strlen(string); i++) {
cout << string[i] << ": "
<< (maskarray[i] & ctype_base::alpha "alpha"
: "not alpha")
<< endl;;
};
}
ctype::narrow
Convierte caracteres de tipo CharType
usados por una configuración regional en los caracteres correspondientes de tipo char
del juego de caracteres nativo.
char narrow(CharType ch, char default = '\0') const;
const CharType* narrow(
const CharType* first,
const CharType* last,
char default,
char* dest) const;
Parámetros
Ch
El carácter de tipo Chartype
usado por la configuración regional que se va a convertir.
default
El valor predeterminado que asignará la función miembro a caracteres de tipo CharType
que no tienen caracteres equivalente de tipo char
.
first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.
dest
Un puntero const al primer carácter de tipo char
del intervalo de destino que almacena el intervalo de caracteres convertido.
Valor devuelto
La primera función miembro devuelve el carácter nativo de tipo char
que corresponde con el carácter de parámetro de tipo CharType default
si no se ha definido ningún homólogo.
La segunda función miembro devuelve un puntero al intervalo de destino de caracteres nativos convertidos a partir de caracteres de tipo CharType
.
Comentarios
La primera función miembro devuelve do_narrow(ch
, default
). La segunda función miembro devuelve do_narrow ( first
, last
, default
, dest
). Solo se garantiza que los caracteres de código fuente básicos tengan una imagen inversa única CharType
en narrow
. Para estos caracteres de código fuente básicos, la siguiente invariable contiene: narrow
( widen ( c ), 0 ) == c.
Ejemplo
// ctype_narrow.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "english" );
wchar_t *str1 = L"\x0392fhello everyone";
char str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).narrow
( str1, str1 + wcslen(str1), 'X', &str2[0] ) != 0); // C4996
str2[wcslen(str1)] = '\0';
wcout << str1 << endl;
cout << &str2[0] << endl;
}
Xhello everyone
ctype::scan_is
Busca el primer carácter de un intervalo que coincide con una máscara especificada.
const CharType *scan_is(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parámetros
maskVal
El valor de máscara que debe coincidir con un carácter.
first
Un puntero al primer carácter del intervalo que se va a examinar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.
Valor devuelto
Un puntero al primer carácter de un intervalo que coincide con una máscara especificada. Si no existe este valor, la función devuelve last.
Comentarios
La función miembro devuelve do_scan_is(maskVal
, first
, last
).
Ejemplo
// ctype_scan_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_is
( ctype_base::punct, string, string + strlen(string) );
cout << "The first punctuation is \"" << *i << "\" at position: "
<< i - string << endl;
}
The first punctuation is "," at position: 5
ctype::scan_not
Busca el primer carácter de un intervalo que no coincide con una máscara especificada.
const CharType *scan_not(
mask maskVal,
const CharType* first,
const CharType* last) const;
Parámetros
maskVal
El valor de máscara que no debe coincidir con un carácter.
first
Un puntero al primer carácter del intervalo que se va a examinar.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.
Valor devuelto
Un puntero al primer carácter de un intervalo que no coincide con una máscara especificada. Si no existe este valor, la función devuelve last.
Comentarios
La función miembro devuelve do_scan_not(maskVal
, first
, last
).
Ejemplo
// ctype_scan_not.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char *string = "Hello, my name is John!";
const char* i = use_facet<ctype<char> > ( loc1 ).scan_not
( ctype_base::alpha, string, string + strlen(string) );
cout << "First nonalpha character is \"" << *i << "\" at position: "
<< i - string << endl;
}
First nonalpha character is "," at position: 5
ctype::tolower
Convierte a minúsculas un carácter o un intervalo de caracteres.
CharType tolower(CharType ch) const;
const CharType *tolower(CharType* first, const CharType* last) const;
Parámetros
Ch
El carácter que se va a convertir en minúscula.
first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
Valor devuelto
La primera función miembro devuelve la forma en minúsculas del parámetro ch. Si no hay ningún formato en minúscula, devuelve ch.
La segunda función miembro devuelve last.
Comentarios
La primera función miembro devuelve do_tolower(ch
). La segunda función miembro devuelve do_tolower(first
, last
).
Ejemplo
// ctype_tolower.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "HELLO, MY NAME IS JOHN";
use_facet<ctype<char> > ( loc1 ).tolower
( string, string + strlen(string) );
cout << "The lowercase string is: " << string << endl;
}
The lowercase string is: hello, my name is john
ctype::toupper
Convierte a mayúsculas un carácter o un intervalo de caracteres.
CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;
Parámetros
Ch
El carácter que se va a convertir en mayúscula.
first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).
Valor devuelto
La primera función miembro devuelve la forma en mayúsculas del parámetro ch. Si no hay ningún formato en mayúscula, devuelve ch.
La segunda función miembro devuelve last.
Comentarios
La primera función miembro devuelve do_toupper(ch
). La segunda función miembro devuelve do_toupper( first
, last
).
Ejemplo
// ctype_toupper.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "German_Germany" );
char string[] = "Hello, my name is John";
use_facet<ctype<char> > ( loc1 ).toupper
( string, string + strlen(string) );
cout << "The uppercase string is: " << string << endl;
}
The uppercase string is: HELLO, MY NAME IS JOHN
ctype::widen
Convierte un carácter de tipo char
del juego de caracteres nativo en el carácter correspondiente de tipo CharType
usado por una configuración regional.
CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;
Parámetros
byte
El carácter de tipo char en el juego de caracteres nativo que se convertirá.
first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.
last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.
dest
Un puntero al primer carácter de tipo CharType
del intervalo de destino que almacena el intervalo de caracteres convertido.
Valor devuelto
La primera función miembro devuelve el carácter de tipo CharType
que corresponde con el carácter de parámetro de tipo nativo char
.
La segunda función miembro devuelve un puntero al intervalo de destino de caracteres de tipo CharType
usados por una configuración regional convertida a partir de caracteres nativos de tipo char
.
Comentarios
La primera función miembro devuelve do_widen(byte
). La segunda función miembro devuelve do_widen(first
, last
, dest
).
Ejemplo
// ctype_widen.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc1 ( "English" );
char *str1 = "Hello everyone!";
wchar_t str2 [16];
bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).widen
( str1, str1 + strlen(str1), &str2[0] ) != 0); // C4996
str2[strlen(str1)] = '\0';
cout << str1 << endl;
wcout << &str2[0] << endl;
ctype<wchar_t>::char_type charT;
charT = use_facet<ctype<char> > ( loc1 ).widen( 'a' );
}
Hello everyone!
Hello everyone!
Vea también
<locale>
Seguridad para subprocesos en la biblioteca estándar de C++