次の方法で共有


_mbccpy_s, _mbccpy_s_l

文字列のマルチバイト文字 1 個を他の文字列にコピーします。 これらのバージョンの_mbccpy_mbccpy_l、「CRT のセキュリティ機能説明されているように、セキュリティが強化

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

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
使用するロケール。

戻り値

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。 srcまたはdestNULLされている場合、またはbuffSizeinBytesバイトを超えるバイトがdestにコピーされる場合は、「Parameter 検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行を続行できる場合、関数は EINVALを返し、 errnoEINVAL に設定されます。

解説

_mbccpy_s 関数は、src から dest に、マルチバイト文字を 1 文字コピーします。 src_ismbbleadの暗黙的な呼び出しによって決定されるマルチバイト文字の先頭バイトを指していない場合は、srcが指す 1 バイトがコピーされます。 srcがリード バイトを指しているが、次のバイトが 0 であるため無効な場合、0 はdestにコピーされ、errnoEILSEQに設定され、関数はEILSEQを返します。

_mbccpy_s は null ターミネータを追加しません。ただし、 src が null 文字を指している場合、その null は (通常の 1 バイト コピーとして) dest にコピーされます。

pCopied の値には、コピーされたバイト数が格納されます。 操作が正常に終了した場合は、1 と 2 のどちらかの値となります。 NULL が渡されると、このパラメーターは無視されます。

src dest へのコピー対象 pCopied 戻り値
先行バイト以外 先行バイト以外 1 0
0 0 1 0
後続が 0 以外の先行バイト 後続が 0 以外の先行バイト 2 0
後続が 0 以外の先行バイト 0 1 EILSEQ

2 番目の行は、最初の行の特殊なケースにすぎません。 このテーブルでは、 buffSizeInBytes>= pCopiedと見なされます。

_mbccpy_s は、すべてのロケールに依存する動作に現在のロケールを使用します。 _mbccpy_s_l_mbccpy_s と同じですが、_mbccpy_s_l は現在のロケールではなく渡されたロケールを使用するという点で異なります。

C++ では、テンプレートのオーバーロードによってこれらの関数を簡単に使用できます。オーバーロードでは、バッファー長を自動的に推論できるため、サイズ引数を指定する必要がなくなります。 詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

Tchar.h のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tccpy_s マクロまたはインライン関数に割り当てる。 _mbccpy_s マクロまたはインライン関数に割り当てる。

要件

ルーチンによって返される値 必須ヘッダー
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

ロケール
マルチバイト文字のシーケンスの解釈
_mbclenmblen_mblen_l