Преобразовать многобайтовый символ в широкий символ
#include <stdlib.h>int mbtowc( wchar_t *pwc,const char *s,size_t n );
wchar_t
, куда функция сохранит широкий символ.libc
Функция mbtowc() конвертирует один многобайтовый символ, начинающийся с s в широкий символ, находящийся в pwc, максимальный размер символа указывается в аргументе n. Функция останавливается, если встречается нуль-терминатор.
На результат работы функции влияет значение LC_TYPE
.
Функция mbrtowc() является перезапускаемой версией функции mbtowc().
NULL:
NULL:
MB_CUR_MAX
(если n или меньше байт представляют собой корректный многобайтовый символ).
#include <stdio.h>#include <stdlib.h>int main( void ){char *wc = "string";wchar_t wbuffer[10];int i, len;printf( "State-dependent encoding? " );if ( mbtowc( wbuffer, NULL, 0 ) ){printf( "Yes\n" );} else {printf( "No\n" );}len = mbtowc( wbuffer, wc, 2 );wbuffer[len] = '\0';printf( "%s(%d)\n", wc, len );for ( i = 0; i < len; i++ ){printf( "/%4.4x", wbuffer[i] );}printf( "\n" );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out State-dependent encoding? No string(1) /0073
ANSI, POSIX 1003.1
btowc(), errno, mblen(), mbrlen(), mbrtowc(), mbsinit(), mbsrtowcs(), mbstowcs()
Предыдущий раздел: Описание API системной библиотеки