_mbccpy_s, _mbccpy_s_l
Kopiuje jeden znak wielobajtowy z ciągu do innego ciągu.Te wersje _mbccpy, _mbccpy_l mają wzmocnienia zabezpieczeń, jak opisano w Funkcje zabezpieczeń w CRT.
![]() |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /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
Parametry
[poza] dest
Miejsce docelowe kopii.[w] buffSizeInBytes
Rozmiar buforu miejsca docelowego.[poza] pCopied
Wypełniony liczbą bajtów skopiowanych (1 lub 2, jeśli zakończone sukcesem).Przekazać NULL jeśli nie dba o numerze.[w] src
Znak wielobajtowy, który ma zostać skopiowany.[w] locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zero, jeśli operacja się powiedzie; w przeciwnym razie, kod błędu.Jeśli src lub dest wynosi NULL lub, jeśli więcej niż buffSizeinBytes bajtów zostałoby skopiowanych do dest, wówczas procedura obsługi nieprawidłowego parametru jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, funkcje zwracają EINVAL, a errno jest ustawione jako EINVAL.
Uwagi
Funkcja _mbccpy_s kopiuje jeden znak wielobajtowy z src do dest.Jeśli src nie wskazuje bajtu wiodącego znaku wielobajtowego jak ustalono przez wywołanie niejawne _ismbblead, wówczas bajt pojedynczy, na który wskazuje src jest kopiowany.Jeśli src wskazuje na bajt wiodący, ale następny bajt jest 0, a więc jest nieważny, wówczas 0 jest kopiowane do dest, errno ustawiono na EILSEQ, a funkcja zwraca EILSEQ.
_mbccpy_s nie dołącza terminatora null; jednakże, jeśli src wskazuje znak null, wówczas ten znak null jest kopiowany do dest (jest to po prostu regularna kopia jednobajtowa).
Wartość w pCopied jest wypełniona liczbą bajtów skopiowanych.Możliwe wartości to 1 i 2, jeśli operacja powiedzie się.Jeśli NULL został przekazany, ten parametr jest ignorowany.
src |
skopiowano do dest |
pCopied |
Wartość zwrócona |
---|---|---|---|
bajt-nie-wiodący |
bajt-nie-wiodący |
1 |
0 |
0 |
0 |
1 |
0 |
bajt wiodący, następnie wartość niezerowa |
bajt wiodący, następnie wartość niezerowa |
2 |
0 |
bajt wiodący, następnie 0 |
0 |
1 |
EILSEQ |
Należy zauważyć, że drugi wiersz jest szczególnym przypadkiem pierwszego.Należy również zauważyć, że tabela zakłada buffSizeInBytes >= pCopied.
_mbccpy_s używa bieżących ustawień regionalnych dla wszelkich zachowań zależnych od ustawień regionalnych._mbccpy_s_l jest identyczny z _mbccpy_s, z tą różnicą, że _mbccpy_s_l używa ustawień regionalnych dla wszelkich zachowań zależnych od ustawień regionalnych.
W języku C++, korzystanie z tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wydedukować długość buforu, eliminując konieczność określenia argumentu rozmiaru.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE i _MBCS nie zdefiniowany |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_tccpy_s |
Mapy i makro lub funkcja śródwierszowa. |
_mbccpy_s |
Mapy i makro lub funkcja śródwierszowa. |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_mbccpy_s |
<mbCiąg.h> |
_mbccpy_s_l |
<mbCiąg.h> |
Aby uzyskać więcej informacji na temat zgodności – zobacz: Zgodność.