_mbccpy_s
, _mbccpy_s_l
Копирует один многобайтовый символ из одной строки в другую. Эти версии имеют _mbccpy_l
улучшения безопасности, как описано в функциях _mbccpy
безопасности в CRT.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
errno_t _mbccpy_s(
unsigned char *dest,
size_t buffSizeInBytes,
int * pCopied,
const unsigned char *src
);
errno_t _mbccpy_s_l(
unsigned char *dest,
size_t buffSizeInBytes,
int * pCopied,
const unsigned char *src,
_locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
unsigned char (&dest)[size],
int * pCopied,
const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
unsigned char (&dest)[size],
int * pCopied,
const unsigned char *src,
_locale_t locale
); // C++ only
Параметры
dest
Место назначения копирования.
buffSizeInBytes
Размер буфера назначения.
pCopied
Заполняется числом скопированных байтов (1 или 2 в случае успешного выполнения). Если это значение не важно, передайте NULL
.
src
Многобайтовый символ для копирования.
locale
Используемый языковой стандарт.
Возвращаемое значение
Возвращает нуль в случае успеха или код ошибки в случае неудачи. Если src
или dest
есть NULL
buffSizeinBytes
или больше байтов копируются dest
в, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение разрешено продолжать, функция возвращается EINVAL
и errno
имеет значение EINVAL
.
Замечания
Функция _mbccpy_s
копирует один многобайтовый символ из src
в dest
. Если src
не указывает на ведущий байт многобайтового символа, определяемого неявным вызовом _ismbblead
, то копируется один байт, src
указывающий на байт. Если src
указывает на байт свинца, но следующий байт равен 0 и поэтому недопустим, то 0 копируется dest
в , имеет EILSEQ
значение , errno
а функция возвращаетсяEILSEQ
.
_mbccpy_s
не добавляет конца null; однако, если src
указывает на пустой символ, то это значение NULL копируется dest
в (как обычная однобайтовая копия).
Значение pCopied
заполняется числом скопированных байтов. В случае успешного выполнения операции возможны значения 1 и 2. Если передано значение NULL
, этот параметр не учитывается.
src |
копируется в dest |
pCopied |
Возвращаемое значение |
---|---|---|---|
не старший байт | не старший байт | 1 | 0 |
0 | 0 | 1 | 0 |
старший байт, за которым следует не 0 | старший байт, за которым следует не 0 | 2 | 0 |
старший байт, за которым следует 0 | 0 | 1 | EILSEQ |
Вторая строка — это просто особый случай первой строки. В таблице предполагается buffSizeInBytes
>, что это = pCopied
.
Функция_mbccpy_s
использует текущий языковой стандарт для любого поведения, зависящего от языкового стандарта. Функция _mbccpy_s_l
идентична функции _mbccpy_s
, но в функции _mbccpy_s_l
для любого поведения, зависящего от языкового стандарта, используется переданный в параметре языковой стандарт.
В C++ использование этих функций упрощено шаблонными перегрузками; перегрузки могут определить длину буфера автоматически, устраняя необходимость указывать аргумент size. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Подпрограмма Tchar.h | _UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tccpy_s |
Сопоставляется макросу или встраиваемой функции. | _mbccpy_s |
Сопоставляется макросу или встраиваемой функции. |
Требования
Маршрут | Обязательный заголовок |
---|---|
_mbccpy_s |
<mbstring.h> |
_mbccpy_s_l |
<mbstring.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Локаль
Интерпретация последовательностей многобайтовых символов
_mbclen
, , mblen
_mblen_l