mbstowcs_s, _mbstowcs_s_l
Převede odpovídající posloupnost znaků celou posloupnost vícebajtových znaků.Verze mbstowcs, _mbstowcs_l s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
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
[výstup]pReturnValue
Počet znaků převedeny.[výstup]wcstr
Adresa vyrovnávací paměti pro výsledný řetězec znaků převedeného.[v]sizeInWords
Velikost wcstr slova vyrovnávací paměť.[v]mbstr
Adresa posloupnost null ukončena vícebajtových znaků.[v]count
Maximální počet znaků široké ukládat wcstr vyrovnávací paměti není včetně ukončující null nebo _TRUNCATE.[v]locale
Národní prostředí použít.
Vrácená hodnota
Nula, pokud je úspěšná, kód chyby při selhání.
Chybový stav |
Vrátí hodnotu aerrno |
---|---|
wcstris NULL and sizeInWords > 0 |
EINVAL |
mbstrjeNULL |
EINVAL |
Cílové vyrovnávací paměti je příliš malá obsahovat řetězec převedený (Pokud count je _TRUNCATE; viz poznámky níže) |
ERANGE |
wcstris not NULL and sizeInWords == 0 |
EINVAL |
Pokud dojde k některé z těchto podmínek, je neplatný parametr výjimky vyvolat popsaným v Ověření parametru .Pokud je povoleno spuštění pokračovat, vrátí kód chyby a nastaví errno jak je uvedeno v tabulce.
Poznámky
mbstowcs_s Funkce převede řetězec vícebajtových znaků odkazuje mbstr do široké znaky uloženy ve vyrovnávací paměti odkazuje wcstr.Převod bude pro každý znak pokračovat, dokud není splněna jedna z těchto podmínek:
Je-li zjištěna vícebajtové znaky null
Je zjištěna neplatná vícebajtových znaků
Počet uložených v široké znaků wcstr vyrovnávací paměti se rovná count.
Cíl řetězec je vždy zakončený hodnotou null (i u chyba).
Pokud count je speciální hodnota _TRUNCATE, pak mbstowcs_s převede největší řetězec jako se vejdou do vyrovnávací paměti cíl, přitom stále ponechat prostor pro zakončení null.
Pokud mbstowcs_s úspěšně převede řetězec zdroj odešle do široké znaků převedeného řetězec, včetně ukončovací null do velikosti *pReturnValue (podle pReturnValue není NULL).Dochází i v případě wcstr argument je NULL a poskytuje způsob, jak určit velikost použité vyrovnávací paměti.Note that if wcstr is NULL, count is ignored, and sizeInWords must be 0.
Pokud mbstowcs_s nalezne neplatný vícebajtové znakové ji umístí 0 *pReturnValue, nastaví cílové vyrovnávací paměti na prázdný řetězec, nastaví errno na EILSEQa vrátí EILSEQ.
Pokud na sekvence odkazuje mbstr a wcstr překrývají chování mbstowcs_s nedefinovaná.
Poznámka k zabezpečení |
---|
Zajistit, aby wcstr a mbstr nepřekrývají a že count správně odráží počet převodu vícebajtových znaků. |
mbstowcs_spoužívá aktuální národní prostředí pro všechny národní prostředí závislé na chování; _mbstowcs_s_lje identické používá místo předány národní prostředí.Další informace naleznete v tématu Národní prostředí.
V jazyce C++ použití těchto funkcí je zjednodušeno díky šablony přetížení; přetížení automaticky odvodit vyrovnávací paměti (není tak nutné zadat argument velikost) a jsou automaticky nahradit starší, -secure funkce s jejich protějšky novější, zabezpečené.Další informace naleznete v tématu Přetížení zabezpečení šablony.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v Příklady vyvolat platformu.