Namespaces
Variants

std:: wctob

From cppreference.net
Défini dans l'en-tête <cwchar>
int wctob ( std:: wint_t c ) ;

Rétrécit un caractère large c si son équivalent en caractère multioctet dans l'état de décalage initial est un octet unique.

Cela est généralement possible pour les caractères de l'ensemble de caractères ASCII, car la plupart des encodages multioctets (tels que UTF-8) utilisent des octets uniques pour encoder ces caractères.

Table des matières

Paramètres

c - caractère large vers caractère étroit

Valeur de retour

EOF si c ne représente pas un caractère multi-octets de longueur 1 dans l'état de décalage initial.

Sinon, la représentation sur un octet de c en tant que unsigned char convertie en int .

Exemple

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

Sortie :

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

Voir aussi

élargit un caractère étroit d'un octet en caractère large, si possible
(fonction)
rétrécit les caractères
(fonction membre publique de std::basic_ios<CharT,Traits> )
appelle do_narrow
(fonction membre publique de std::ctype<CharT> )