_mbccpy_s, _mbccpy_s_l

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

重要

この 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 を返します。失敗した場合はエラー コードを返します。 destまたはバイト数を超えるbuffSizeinBytesバイトがコピーされるdest場合srcNULL、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の続行が許可されている場合、関数は 、を返 EINVALし、 errno 次に EINVAL設定されます。

解説

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

_mbccpy_s は null ターミネータを追加しません。ただし、null 文字を指している場合 src 、その 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 番目の行は、最初の行の特殊なケースにすぎません。 テーブルは = pCopiedbuffSizeInBytes>前提としています。

_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」を参照してください。

関連項目

ロケール
マルチバイト文字シーケンスの解釈
_mbclen, mblen, _mblen_l