Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Převede řetězec vícebajtového znaku v aktuálním národním prostředí na odpovídající řetězec širokého znaku s možností restartování uprostřed vícebajtového znaku. K dispozici je bezpečnější verze této funkce; viz .mbsrtowcs_s
Syntaxe
size_t mbsrtowcs(
wchar_t *wcstr,
const char **mbstr,
sizeof count,
mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
wchar_t (&wcstr)[size],
const char **mbstr,
sizeof count,
mbstate_t *mbstate
); // C++ only
Parametry
wcstr
Adresa pro uložení výsledného převedeného řetězce širokého znaku
mbstr
Nepřímý ukazatel na umístění vícebajtového znakového řetězce, který chcete převést.
count
Maximální počet znaků (nikoli bajtů) pro převod a uložení v wcstr.
mbstate
Ukazatel na objekt stavu převodu mbstate_t . Pokud je tato hodnota ukazatel null, použije se objekt stavu statického interního převodu. Protože interní mbstate_t objekt není bezpečný pro přístup z více vláken, doporučujeme vždy předat vlastní mbstate parametr.
Vrácená hodnota
Vrátí počet znaků, které byly úspěšně převedeny, a neobsahuje ukončující znak null, pokud existuje. Vrátí (size_t)(-1), pokud došlo k chybě a nastaví errno hodnotu EILSEQ.
Poznámky
Funkce mbsrtowcs převede řetězec vícebajtových znaků, na který mbstrnepřímo odkazuje , na široké znaky uložené ve vyrovnávací paměti, na kterou wcstrodkazuje , pomocí stavu převodu obsaženého v mbstate. Převod pokračuje u každého znaku, dokud nebude zjištěn ukončující vícebajtový znak null, vícebajtovou sekvenci, která neodpovídá platnému znaku v aktuálním národním prostředí, nebo dokud count nebudou převedeny znaky. Pokud mbsrtowcs narazí na vícebajtový znak null ('\0') buď před nebo kdy count nastane, převede ho na 16bitový ukončující znak null a zastaví.
Proto je řetězec širokého znaku s wcstr hodnotou null ukončen pouze v případě, že mbsrtowcs během převodu narazí na vícebajtový znak null. Pokud se sekvence ukazující mbstr na a wcstr překrývají se, chování mbsrtowcs není definováno. mbsrtowcs je ovlivněna LC_TYPE kategorií aktuálního národního prostředí.
Funkce mbsrtowcs se liší od mbstowcsmožnosti _mbstowcs_l restartování. Stav převodu se uloží mbstate pro následná volání stejných nebo jiných restartovatelných funkcí. Výsledky nejsou definovány při kombinování použití restartovatelných a nerestartovatelných funkcí. Například aplikace by měla místo mbsrlen mbslen, pokud se použije následné volání mbsrtowcs místo mbstowcs.
Pokud wcstr není ukazatel null, je objekt ukazatele, na který mbstr odkazuje, přiřazen ukazatel null, pokud převod přestal, protože byl dosažen ukončující znak null. V opačném případě se adresa přiřadí za poslední vícebajtový znak převedený, pokud existuje. Umožňuje následné volání funkce restartovat převod tam, kde se toto volání zastavilo.
wcstr Pokud je argument ukazatelem null, count argument se ignoruje a mbsrtowcs vrátí požadovanou velikost širokých znaků pro cílový řetězec. Pokud mbstate je ukazatel null, funkce používá objekt stavu statického mbstate_t interního převodu bez vláken bezpečný. Pokud sekvence mbstr znaků nemá odpovídající vícebajtovou reprezentaci znaků, vrátí se hodnota -1 a errno nastaví se na EILSEQhodnotu .
Pokud mbstr je ukazatel null, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tato funkce nastaví errno EINVAL hodnotu -1 a vrátí hodnotu -1.
V jazyce C++ má tato funkce přetížení šablony, které vyvolá novější zabezpečený protějšk této funkce. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Výjimky
Funkce mbsrtowcs je vícevláknová bezpečná, pokud žádná funkce v aktuálním vlákně volá setlocale , pokud se tato funkce spouští a mbstate argument není ukazatelem null.
Požadavky
| Rutina | Požadovaný hlavičkový soubor |
|---|---|
mbsrtowcs |
<wchar.h> |
Viz také
Konverze dat
Národní prostředí
Interpretace vícebajtových sekvencí znaků
mbrtowc
mbtowc, _mbtowc_l
mbstowcs, _mbstowcs_l
mbsinit