wctob
|
Défini dans l'en-tête
<wchar.h>
|
||
|
int
wctob
(
wint_t c
)
;
|
(depuis C95) | |
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 avec une longueur de
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 <locale.h> #include <wchar.h> #include <stdio.h> #include <assert.h> void try_narrowing(wchar_t c) { int cn = wctob(c); if(cn != EOF) printf("%#x narrowed to %#x\n", c, cn); else printf("%#x could not be narrowed\n", c); } int main(void) { char* utf_locale_present = setlocale(LC_ALL, "th_TH.utf8"); assert(utf_locale_present); puts("In Thai UTF-8 locale:"); try_narrowing(L'a'); try_narrowing(L'๛'); char* tis_locale_present = setlocale(LC_ALL, "th_TH.tis620"); assert(tis_locale_present); puts("In Thai TIS-620 locale:"); try_narrowing(L'a'); try_narrowing(L'๛'); }
Sortie possible :
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
Références
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.29.6.1.2 La fonction wctob (p: 441)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.24.6.1.2 La fonction wctob (p: 387)
Voir aussi
|
(C95)
|
élargit un caractère étroit d'un octet en caractère large, si possible
(fonction) |
|
Documentation C++
pour
wctob
|
|