From cppreference.com
intwctob(std::wint_tc);Narrows a wide character c 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.
Parameters
c - wide character to narrow Return value
if c does not represent a multibyte character with length 1 in initial shift state.
Otherwise, the single-byte representation of c as unsignedchar converted to int.
Example
Run this code
#include<clocale>#include<cwchar>#include<iostream>voidtry_narrowing(wchar_tc){intcn=std::wctob(c);if(cn!=EOF)std::cout<<'\''<<int(c)<<"' narrowed to "<<+cn<<'\n';elsestd::cout<<'\''<<int(c)<<"' could not be narrowed\n";}intmain(){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 narrowed In Thai TIS-620 locale: '0x61' narrowed to 0x61 '0xe5b' narrowed to 0xfb See also
widens a single-byte narrow character to wide character, if possible
(function)
narrows characters
(public member function of std::basic_ios<CharT,Traits>)
invokes do_narrow
(public member function of std::ctype<CharT>)