_mbccpy_s
, _mbccpy_s_l
Kopiert ein Multibytezeichen von einer Zeichenfolge in eine andere Zeichenfolge. Diese Versionen von _mbccpy
, _mbccpy_l
verfügen über Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
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
Parameter
dest
Kopierziel.
buffSizeInBytes
Größe des Zielpuffers.
pCopied
Wird mit der Anzahl kopierter Bytes gefüllt (bei Erfolg 1 oder 2). Übergeben Sie NULL
, wenn die Zahl nicht relevant ist.
src
Zu kopierendes Multibytezeichen.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt. Wenn src
oder ist NULL
, dest
oder wenn mehr als buffSizeinBytes
Bytes in kopiert dest
werden würde, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, werden die Funktionen zurückgegeben EINVAL
und errno
auf .EINVAL
Hinweise
Die _mbccpy_s
-Funktion kopiert ein Multibytezeichen von src
in dest
. Wenn src
nicht auf das Leadbytebyte-Byte eines Multibyte-Zeichens zeigt, wie durch einen impliziten Aufruf _ismbblead
bestimmt wird, wird das einzelne Byte kopiert, auf das src
verweist. Wenn src
auf ein Leadbyte zeigt, aber das folgende Byte 0 und somit ungültig ist, wird 0 in dest
, wird auf EILSEQ
, errno
und die Funktion wird zurückgegebenEILSEQ
.
_mbccpy_s
fügt keinen Null-Terminator an; src
Wenn sie jedoch auf ein NULL-Zeichen zeigt, wird diese Null kopiert dest
(als normale Einzelbytekopie).
Der Wert in pCopied
wird mit der Anzahl kopierter Bytes gefüllt. Mögliche Werte sind 1 und 2, wenn der Vorgang erfolgreich ist. Wenn NULL
übergeben wird, wird dieser Parameter ignoriert.
src |
kopiert nach dest |
pCopied |
Rückgabewert |
---|---|---|---|
kein führendes Byte | kein führendes Byte | 1 | 0 |
0 | 0 | 1 | 0 |
führendes Byte gefolgt von Nicht-0 | führendes Byte gefolgt von Nicht-0 | 2 | 0 |
führendes Byte gefolgt von 0 | 0 | 1 | EILSEQ |
Die zweite Zeile ist nur ein Sonderfall der ersten Zeile. Die Tabelle geht davon aus, dass buffSizeInBytes
>= pCopied
.
_mbccpy_s
verwendet das aktuelle Gebietsschema für jedes gebietsschemaabhängige Verhalten. _mbccpy_s_l
ist mit _mbccpy_s
identisch, außer dass _mbccpy_s_l
das Gebietsschema verwendet, das für jedes gebietsschemaabhängige Verhalten übergeben wurde.
Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Secure Template Overloads.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
Tchar.h-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tccpy_s |
Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus. | _mbccpy_s |
Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus. |
Anforderungen
Routine | Erforderlicher Header |
---|---|
_mbccpy_s |
<mbstring.h> |
_mbccpy_s_l |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Siehe auch
Gebietsschema
Interpretation von Multibytezeichensequenzen
_mbclen
, mblen
_mblen_l