std::wctob
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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) << "' сузился до " << +cn << '\n';
else
std::cout << '\'' << int(c) << "' не удалось сузить\n";
}
int main()
{
std::setlocale(LC_ALL, "th_TH.utf8");
std::cout << std::hex << std::showbase << "В тайской локали UTF-8:\n";
try_narrowing(L'a');
try_narrowing(L'๛');
std::setlocale(LC_ALL, "th_TH.tis620");
std::cout << "В тайской локали TIS-620:\n";
try_narrowing(L'a');
try_narrowing(L'๛');
}
Вывод:
В тайской локали UTF-8:
'0x61' сузился до 0x61
'0xe5b' не удалось сузить
В тайской локали TIS-620:
'0x61' сузился до 0x61
'0xe5b' сузился до 0xfb
Смотрите также
| расширяет однобайтовый узкий символ до широкого символа, если это возможно (функция) | |
| конвертирует символ в символ меньшей ширины (public функция-элемент std::basic_ios)
| |
Вызывает do_narrow Оригинал: invokes do_narrow Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент std::ctype)
| |
Документация C по wctob
| |