std::wctob
Von cppreference.com
| Definiert in Header <cwchar> |
||
| int wctob( std::wint_t c ); |
||
Schmälert ein Breitzeichen c, wenn sein Multibyte-Zeichenäquivalent im initialen Shift-Zustand nur ein Byte lang ist.
Dies ist typischerweise für Zeichen aus dem ASCII-Zeichensatz möglich, da die meisten Multibyte-Kodierungen (wie z.B. UTF-8) einzelne Bytes zur Kodierung dieser Zeichen verwenden.
Inhalt |
[edit] Parameter
| c | - | zu schmälerndes Breitzeichen |
[edit] Rückgabewert
EOF, wenn c kein Multibyte-Zeichen der Länge 1 im initialen Shift-Zustand darstellt.
Andernfalls die Ein-Byte-Repräsentation von c als unsigned char, konvertiert zu int.
[edit] Beispiel
Führen Sie diesen Code aus
#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'๛'); }
Ausgabe
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
[edit] Siehe auch
| erweitert ein ein Byte breites schmales Zeichen zu einem Wide-Zeichen, falls möglich (Funktion) | |
| verengt Zeichen (public member function of std::basic_ios<CharT,Traits>) | |
ruft do_narrow auf(public member function of std::ctype<CharT>) | |
| C-Dokumentation für wctob
| |