Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Копирует один многобайтовый символ из одной строки в другую. Эти версии имеют _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 есть NULLbuffSizeinBytes или больше байтов копируются 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