Spec-Zone.ru › C

btowc

Определено в заголовке <wchar.h>
wint_t btowc( int c );
(с C95)

Расширяет однобайтовый символ c (переинтерпретированный как unsigned char) до его эквивалента широкого символа.

Большинство многобайтовых кодировок используют однобайтовые коды для представления символов из набора символов ASCII. Эта функция может быть использована для преобразования таких символов в wchar_t.

Параметры

c - однобайтовый символ для расширения

Возвращаемое значение

WEOF если c равен EOF

представление широкого символа c если (unsigned char)c является допустимым однобайтовым символом в начальном состоянии сдвига, WEOF в противном случае.

Пример

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <assert.h>
 
void try_widen(unsigned char c)
{
    wint_t w = btowc(c);
    if(w != WEOF)
        printf("The single-byte character %#x widens to %#x\n", c, w);
    else
        printf("The single-byte character %#x failed to widen\n", c);
}
 
int main(void)
{
    char *loc = setlocale(LC_ALL, "lt_LT.iso88594");
    assert(loc);
    printf("In Lithuanian ISO-8859-4 locale:\n");
    try_widen('A');
    try_widen('\xdf'); // German letter ß (U+00df) in ISO-8859-4
    try_widen('\xf9'); // Lithuanian letter ų (U+0173) in ISO-8859-4
 
    setlocale(LC_ALL, "lt_LT.utf8");
    printf("In Lithuanian UTF-8 locale:\n");
    try_widen('A');
    try_widen('\xdf');
    try_widen('\xf9');
}

Возможный вывод:

In Lithuanian ISO-8859-4 locale:
The single-byte character 0x41 widens to 0x41
The single-byte character 0xdf widens to 0xdf
The single-byte character 0xf9 widens to 0x173
In Lithuanian UTF-8 locale:
The single-byte character 0x41 widens to 0x41
The single-byte character 0xdf failed to widen
The single-byte character 0xf9 failed to widen

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.29.6.1.1 Функция btowc (с. 441)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.24.6.1.1 Функция btowc (с. 387)

См. также

wctob
(C95)
преобразует широкий символ в однобайтовый узкий символ, если возможно
(функция)
Документация C++ для btowc

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/multibyte/btowc

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API