mbstowcs_s, _mbstowcs_s_l
Преобразует последовательность многобайтовых символов в соответствующей последовательности широких символов.Версии mbstowcs, _mbstowcs_l с улучшения безопасности, как описано в разделе Средства безопасности в CRT.
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count,
_locale_t locale
); // C++ only
Параметры
[исходящий] pReturnValue
Преобразовать число символов.[исходящий] wcstr
Адрес буфера для полученного преобразовать строка двухбайтовых знаков.[входящий] sizeInWords
Размер wcstr буфера в словах.[in]mbstr
Адрес последовательности null завершен многобайтовых символов.[входящий] count
Максимальное число широких символов для хранения в wcstr буфера, не включая завершающий null или _TRUNCATE.[входящий] locale
Языковой стандарт.
Возвращаемое значение
Нуль в случае успешного выполнения, код ошибки в случае сбоя.
Состояние ошибки |
Возвращаемое значение иerrno |
---|---|
wcstris NULL and sizeInWords > 0 |
EINVAL |
Параметр mbstr содержит значение NULL |
EINVAL |
Целевой буфер слишком мал для хранения преобразованных строки (если не count , _TRUNCATE; см. примечания ниже) |
ERANGE |
wcstris not NULL and sizeInWords == 0 |
EINVAL |
Вызывается при возникновении любого из следующих условий исключения недопустимого параметра, как описано в разделе Проверка параметров .Если выполнение разрешается продолжить, то функция возвращает код ошибки и устанавливает errno как указано в таблице.
Заметки
mbstowcs_s Функция преобразует строки многобайтовых символов, на который указывает mbstr в широкие символы в буфер, на который указывает wcstr.Преобразование будет продолжать для каждого символа, пока не будет выполнено одно из следующих условий:
Обнаружена многобайтовых символов null
Обнаружены недопустимые многобайтовые кодировки
Число двухбайтовых знаков, хранящиеся в wcstr буфера равно count.
Строка назначения всегда нулем (даже в случае возникновения ошибки).
Если count — это специальное значение _TRUNCATE, затем mbstowcs_s преобразует столько строк, как будут помещается в буфер назначения по-прежнему, оставляя место для нулевой завершающий символ.
Если mbstowcs_s успешно преобразует строку исходного размера помещается в широких символов преобразованной строки, включая символ конца, в *pReturnValue (предоставляется pReturnValue не NULL).Это происходит, даже если wcstr аргумент NULL и предоставляет способ определить требуемый размер буфера.Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.
Если mbstowcs_s встречает недопустимых многобайтовых символов 0 помещается в *pReturnValue, задает буфер назначения является пустой строкой, задает errno для EILSEQи возвращает EILSEQ.
Если в последовательности, на который указывает mbstr и wcstr перекрывать поведение mbstowcs_s не определен.
Примечание по безопасности |
---|
Убедитесь, что wcstr и mbstr не перекрываются и count правильно отражает число многобайтовых символов для преобразования. |
mbstowcs_sиспользует текущий языковой стандарт для всех зависимых от языковых стандартов поведения; _mbstowcs_s_lидентичен, за исключением того, что он использует язык, переданное вместо.Дополнительные сведения см. в разделе Языковой стандарт.
В C++ с помощью этих функций является упрощенной, перегрузок шаблонов; перегрузки может автоматически определить длину буфера (избавляет от необходимости указания размера аргумента) и они автоматически заменить старые, небезопасные функции с их эквивалентами в новой, безопасной.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.
Требования
Процедура |
Обязательный заголовок |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
Совместимость Дополнительные сведения см. Совместимость во введении.
Эквивалент в .NET Framework
Неприменимо. Вызов стандартной функции c помощью PInvoke. Для получения дополнительных сведений см. Примеры вызова платформы.