_mbccpy_s, _mbccpy_s_l

复制从字符串的一个多字节字符到另一个字符串。 这些是 _mbccpy, _mbccpy_l 的版本与安全增强如 CRT中的安全功能所述。

重要

此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

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

参数

  • [out] dest
    复制目标。

  • [in] buffSizeInBytes
    目标缓冲区的大小。

  • [out] pCopied
    在复制的字节数加载 (1 或 2,如果成功)。 如果您对该数字,不关心请通过 NULL。

  • [in] src
    要复制的多字节字符。

  • [in] locale
    使用的区域设置。

返回值

零,如果成功;在失败的错误代码。 如果 src 或 dest 是 NULL,或者,如果多 buffSizeinBytes 字节都复制到 dest,然后无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,函数返回 EINVAL,并 errno 设置为 EINVAL。

备注

_mbccpy_s 功能复制 src 的一个多字节字符。dest。 如果 src 不指向多字节字符的前导字节由隐式调用 _ismbblead,则 src 指向的单字节复制。 如果 src 指向前导字节,但以下字节是 0 而无效,则将 0 复制到 dest,errno 设置为 EILSEQ,这样,函数返回 EILSEQ。

_mbccpy_s 不追加 null 结束符;但是,因此,如果 src 指向空复制到 dest (null 字符,则为普通单字节复制)。

在 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++ 中,使用这些功能由模板超加载简化;超加载可能自动推断缓冲区长度,而无需指定范围参数。 有关更多信息,请参见安全模板重载

一般文本例程映射

Tchar.h 实例

未定义的_UNICODE 和_MBCS

定义的_MBCS

定义的_UNICODE

_tccpy_s

对宏或内联函数的映射。

_mbccpy_s

对宏或内联函数的映射。

要求

实例

必需的标头

_mbccpy_s

<mbstring.h>

_mbccpy_s_l

<mbstring.h>

有关更多兼容性信息,请参见中介绍的 兼容性

请参见

参考

区域设置

多字节字符序列的说明

_mbclen, mblen, _mblen_l