mbsrtowcs_s
Jeho znázornění řetězec vícebajtových znaků převeďte řetězec znaků.Verze mbsrtowcs s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
errno_t mbsrtowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char **mbstr,
size_t count,
mbstate_t *mbstate
);
template <size_t size>
errno_t mbsrtowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char **mbstr,
size_t count,
mbstate_t *mbstate
); // C++ only
Parametry
[výstup]pReturnValue
Počet znaků, které jsou převedeny.[výstup]wcstr
Adresa vyrovnávací paměti pro výsledný řetězec znaků převedeného.[výstup]sizeInWords
Velikost wcstr slovy (široký znaků).[v]mbstr
Odkazuje na umístění řetězec vícebajtových znaků převést.[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]mbstate
Ukazatel na mbstate_t převodu stavu objektu.
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 |
Pokud dojde k některé z těchto podmínek, je neplatný parametr výjimky vyvolat popsaným v Ověření parametrů .Pokud je povoleno spuštění pokračovat, vrátí kód chyby a nastaví errno jak je uvedeno v tabulce.
Poznámky
mbsrtowcs_s Funkce převede řetězec vícebajtových znaků odkazuje mbstr do široké znaky uloženy ve vyrovnávací paměti, na kterou odkazuje wcstr, pomocí převodu stavu obsažené v mbstate.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-li zjištěna neplatná vícebajtové znakové
Počet široké znaků wcstr vyrovnávací paměti se rovná count.
Cíl řetězec je vždy zakončený (i u chyba).
Pokud count je speciální hodnota _TRUNCATE, pak mbsrtowcs_s převede část řetězce jako se vejdou do vyrovnávací paměti cíl, přitom stále ponechat prostor pro zakončení null.
Pokud mbsrtowcs_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.
Pokud mbstate je NULL, vnitřní mbstate_t slouží k převodu stavu.
Pokud mbsrtowcs_s nalezne neplatný vícebajtových znaků -1 odešle do *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í mbsrtowcs_s nedefinovaná.mbsrtowcs_svliv LC_TYPE kategorie aktuální národní prostředí.
![]() |
---|
Zajistit, aby wcstr a mbstr nepřekrývají a že count správně odráží počet převodu vícebajtových znaků. |
mbsrtowcs_s Funkce se liší od mbstowcs_s _mbstowcs_s_l podle jeho restartability.Stav převodu je uložen v mbstate pro následné volání na stejné nebo jiné funkce s možností restartování.Výsledky nedefinované při použití funkce restartování a nonrestartable.Například použít aplikaci mbsrlen namísto mbslen, pokud následné volání mbsrtowcs_s byly použity namístombstowcs_s.
V jazyce C++ použití této funkce 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í šablony zabezpečení.
Výjimky
mbsrtowcs Multithread bezpečné je funkce jako žádná funkce v aktuální podproces volá setlocale při této funkce je provádění a mbstate má hodnotu null.
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
mbsrtowcs |
<wchar.h> |