| Localization library | |||||||||||||||||||||||||
| Regular expressions library(C++11) | |||||||||||||||||||||||||
| Formatting library(C++20) | |||||||||||||||||||||||||
| Null-terminated sequence utilities | |||||||||||||||||||||||||
| Byte strings | |||||||||||||||||||||||||
| Multibyte strings | |||||||||||||||||||||||||
| Wide strings | |||||||||||||||||||||||||
| Primitive numeric conversions | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| Text encoding identifications | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Defined in header <cwchar> | ||
int wctob(std::wint_t c); | ||
Narrows a wide characterc if its multibyte character equivalent in the initial shift state is a single byte.
This is typically possible for the characters from the ASCII character set, since most multibyte encodings (such as UTF-8) use single bytes to encode those characters.
Contents |
| c | - | wide character to narrow |
EOF ifc does not represent a multibyte character with length1 in initial shift state.
Otherwise, the single-byte representation ofc asunsignedchar converted toint.
#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';elsestd::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'๛');}
Output:
In Thai UTF-8 locale:'0x61' narrowed to 0x61'0xe5b' could not be narrowedIn Thai TIS-620 locale:'0x61' narrowed to 0x61'0xe5b' narrowed to 0xfb
| widens a single-byte narrow character to wide character, if possible (function)[edit] | |
| narrows characters (public member function of std::basic_ios<CharT,Traits>)[edit] | |
invokesdo_narrow(public member function of std::ctype<CharT>)[edit] | |
C documentation forwctob | |