mbstowcs_s
, _mbstowcs_s_l
Konwertuje sekwencję znaków wielobajtowych na odpowiednią sekwencję znaków szerokich. Wersje programu mbstowcs
_mbstowcs_l
z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count,
_locale_t locale
); // C++ only
Parametry
pReturnValue
Liczba przekonwertowanych znaków.
wcstr
Adres buforu dla wynikowego przekonwertowanego ciągu znaków szerokiego.
sizeInWords
Rozmiar buforu wcstr
w słowach.
mbstr
Adres sekwencji znaków wielobajtowych zakończonych o wartości null.
count
Maksymalna liczba znaków szerokich do przechowywania w buforze wcstr
, w tym wartości null zakończenia lub _TRUNCATE
.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zero, jeśli działanie powiedzie się, kod błędu w przypadku niepowodzenia.
Błąd | Wartość zwracana i errno |
---|---|
wcstr is NULL i sizeInWords > 0 |
EINVAL |
mbstr jest NULL |
EINVAL |
Bufor docelowy jest za mały, aby zawierał przekonwertowany ciąg (chyba że count jest _TRUNCATE to ; zobacz uwagi poniżej) |
ERANGE |
wcstr nie NULL jest i sizeInWords == 0 |
EINVAL |
Jeśli wystąpi którykolwiek z tych warunków, jest wywoływany nieprawidłowy wyjątek parametru zgodnie z opisem w temacie Walidacja parametru. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca kod błędu i ustawia je errno
zgodnie z opisem w tabeli.
Uwagi
Funkcja mbstowcs_s
konwertuje ciąg znaków wielobajtowych wskazywanych przez na mbstr
znaki szerokie przechowywane w buforze wskazywanym przez wcstr
. Konwersja będzie kontynuowana dla każdego znaku do momentu spełnienia jednego z następujących warunków:
Napotkano wielobajtowy znak o wartości null
Napotkano nieprawidłowy znak wielobajtowy
Liczba znaków szerokich przechowywanych w buforze
wcstr
jestcount
równa .
Ciąg docelowy jest zawsze zakończony wartością null (nawet jeśli wystąpi błąd).
Jeśli count
jest to wartość _TRUNCATE
specjalna, funkcja mbstowcs_s
konwertuje tyle ciągu, jak będzie mieścić się w buforze docelowym, pozostawiając miejsce na terminator o wartości null.
Jeśli mbstowcs_s
ciąg źródłowy zostanie pomyślnie przekonwertowany, spowoduje to umieszczenie rozmiaru w szerokich znakach przekonwertowanego ciągu, w tym na terminator *pReturnValue
o wartości null (podany pReturnValue
nie NULL
jest ). Rozmiar jest obliczany nawet wtedy, gdy wcstr
argument to NULL
, i umożliwia określenie wymaganego rozmiaru buforu. Jeśli wcstr
parametr to NULL
, count
jest ignorowany i sizeInWords
musi mieć wartość 0.
Jeśli mbstowcs_s
napotka nieprawidłowy znak wielobajtowy, umieszcza wartość 0 w *pReturnValue
, ustawia bufor docelowy na pusty ciąg, ustawia errno
wartość EILSEQ
na , i zwraca wartość EILSEQ
.
Jeśli sekwencje wskazywane przez mbstr
i wcstr
nakładają się na siebie, zachowanie mbstowcs_s
jest niezdefiniowane.
Ważne
Upewnij się, że wcstr
i mbstr
nie nakładają się, i że count
poprawnie odzwierciedla liczbę znaków wielobajtowych do konwersji.
mbstowcs_s
używa bieżących ustawień regionalnych dla dowolnego zachowania zależnego od ustawień regionalnych; _mbstowcs_s_l
jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu (eliminując konieczność określenia argumentu rozmiaru) i mogą automatycznie zastępować starsze, niezabezpieczone funkcje nowszymi, bezpiecznymi odpowiednikami. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Konwersja danych
ustawienia regionalne
MultiByteToWideChar
Interpretacja sekwencji znaków wielobajtowych
_mbclen
, , mblen
_mblen_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
wctomb
, _wctomb_l