Namespaces
Variants

std:: wctob

From cppreference.net
Definido en el encabezado <cwchar>
int wctob ( std:: wint_t c ) ;

Reduce un carácter ancho c si su equivalente de carácter multibyte en el estado de cambio inicial es un solo byte.

Esto es típicamente posible para los caracteres del conjunto de caracteres ASCII, ya que la mayoría de codificaciones multibyte (como UTF-8) utilizan bytes individuales para codificar esos caracteres.

Contenidos

Parámetros

c - carácter ancho a estrecho

Valor de retorno

EOF si c no representa un carácter multibyte con longitud 1 en estado de desplazamiento inicial.

De lo contrario, la representación de un solo byte de c como unsigned char convertida a int .

Ejemplo

#include <clocale>
#include <cwchar>
#include <iostream>
void try_narrowing(wchar_t c)
{
    int cn = std::wctob(c);
    if (cn != EOF)
        std::cout << '\'' << int(c) << "' narrowed to " << +cn << '\n';
    else
        std::cout << '\'' << int(c) << "' could not be narrowed\n";
}
int main()
{
    std::setlocale(LC_ALL, "th_TH.utf8");
    std::cout << std::hex << std::showbase << "In Thai UTF-8 locale:\n";
    try_narrowing(L'a');
    try_narrowing(L'๛');
    std::setlocale(LC_ALL, "th_TH.tis620");
    std::cout << "In Thai TIS-620 locale:\n";
    try_narrowing(L'a');
    try_narrowing(L'๛');
}

Salida:

In Thai UTF-8 locale:
'0x61' narrowed to 0x61
'0xe5b' could not be narrowed
In Thai TIS-620 locale:
'0x61' narrowed to 0x61
'0xe5b' narrowed to 0xfb

Véase también

amplía un carácter estrecho de un solo byte a carácter ancho, si es posible
(función)
reduce caracteres
(función miembro pública de std::basic_ios<CharT,Traits> )
invoca do_narrow
(función miembro pública de std::ctype<CharT> )