Freigeben über


_mbccpy_s, _mbccpy_s_l

Kopiert ein Multibytezeichen von einer Zeichenfolge in eine andere Zeichenfolge. Diese Versionen von _mbccpy, _mbccpy_l enthalten Sicherheitserweiterungen wie unter Sicherheitsfunktionen in der CRT beschrieben.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

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

  • [out] dest
    Kopierziel.

  • [in] buffSizeInBytes
    Größe des Zielpuffers.

  • [out] pCopied
    Wird mit der Anzahl kopierter Bytes gefüllt (bei Erfolg 1 oder 2). Übergeben Sie NULL, wenn die Zahl nicht relevant ist.

  • [in] src
    Zu kopierendes Multibytezeichen.

  • [in] locale
    Zu verwendendes Gebietsschema.

Rückgabewert

Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt. Wenn src oder destNULL ist oder wenn mehr als buffSizeinBytes-Bytes nach dest kopiert werden, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben die Funktionen EINVAL zurück und legen errno auf EINVAL fest.

Hinweise

Die _mbccpy_s-Funktion kopiert ein Multibytezeichen von src in dest. Wenn src laut eines impliziten Aufrufs von _ismbblead nicht auf das führende Byte eines Multibytezeichens zeigt, dann wird das einzelne Byte, auf das src zeigt, kopiert. Wenn src auf ein führendes Byte zeigt, aber das nächste Byte 0 und somit ungültig ist, wird 0 nach dest kopiert und errno auf EILSEQ festgelegt. Die Funktion gibt dann EILSEQ zurück.

_mbccpy_s fügt keinen NULL-Terminator an. Wenn jedoch src auf ein Nullzeichen zeigt, dann wird diese NULL nach dest kopiert (dies ist nur eine reguläre 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

Beachten Sie, dass die zweite Zeile nur ein Sonderfall der ersten ist. Beachten Sie auch, dass die Tabelle buffSizeInBytes >= pCopied wird.

_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 Sichere Vorlagenüberladungen.

Zuordnung 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

Referenz

Locale

Interpretation von Mehrbytezeichensequenzen

_mbclen, mblen, _mblen_l