mbstowcs()

Преобразовать последовательность из многобайтовых символов в строку из широких символов

Прототип:

#include <stdlib.h>
size_t mbstowcs( wchar_t *pwcs,
const char *s,
size_t n );

Аргументы:

pwcs
Буфер, куда функция сохранить строку широких символов.
s
Последовательность многобайтовых символов.
n
Максимальное количество широких символов, которые можно сохранить в буфер dst.

Библиотека:

libc

Описание:

Функция mbstowcs() конвертирует последовательность многобайтовых символов src в набор соответствующий широких символов dst, аргумент n указывает максимальное число широких символов. Многобайтовые символы за пределами нуль-терминатора не конвертируются.

Функция зависит от LC_TYPE.

Функция mbsrtowcs() является перезапускаемой версией функции mbstowcs().

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

Число преобразованных многобайтовых символов, не включая нуль-терминатор, если он присутствует, или (size_t) - 1 если обнаружен некорректный многобайтовый символ.


Note: Если число преобразованных элементов равно n, массив не заканчивается нуль-терминатором.

Коды ошибок:

EILSEQ
Некорректная последовательность символов.

Примеры:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char *wc = "string";
wchar_t wbuffer[50];
int i, len;
len = mbstowcs( wbuffer, wc, 50 );
if ( len != -1 )
{
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 string(6) /0073/0074/0072/0069/006e/0067

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno mblen(), mbrlen(), mbrtowc(), mbsinit(), mbsrtowcs(), mbtowc()




Предыдущий раздел: Описание API системной библиотеки