std:: wctob
|
Определено в заголовочном файле
<cwchar>
|
||
|
int
wctob
(
std::
wint_t
c
)
;
|
||
Сужает широкий символ c если его многобайтовый эквивалент в начальном состоянии сдвига занимает один байт.
Обычно это возможно для символов из набора символов ASCII, поскольку большинство многобайтовых кодировок (таких как UTF-8) используют одиночные байты для кодирования этих символов.
Содержание |
Параметры
| c | - | широкий символ в узкий |
Возвращаемое значение
EOF если c не представляет многобайтовый символ длиной 1 в начальном состоянии сдвига.
В противном случае, однобайтовое представление c как unsigned char преобразуется в int .
Пример
#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'๛'); }
Вывод:
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
Смотрите также
|
преобразует однобайтовый узкий символ в широкий символ, если возможно
(функция) |
|
|
сужает символы
(публичная функция-член
std::basic_ios<CharT,Traits>
)
|
|
вызывает
do_narrow
(публичная функция-член
std::ctype<CharT>
)
|
|
|
Документация C
для
wctob
|
|