Funkce vfwscanf () v C ++ se používá ke čtení řetězce širokých znaků z bufferu širokého řetězce.
Funkce vfwscanf () je definována v hlavičkovém souboru.
prototyp vswscanf ()
int vswscanf (const wchar_t * buffer, const wchar_t * formát, va_list vlist);
Funkce vfwscanf () čte data z vyrovnávací paměti širokého řetězce a ukládá hodnoty do příslušných umístění definovaných vlist.
Parametry vswscanf ()
- buffer: Ukazatel na null zakončený široký řetězec, ze kterého se mají číst data.
- format: Ukazatel na řetězec znaků s nulovým zakončením, který určuje, jak číst vstup. Skládá se ze specifikátorů formátu počínaje%.
Řetězec formátu má následující části:- Znaky bez mezer s výjimkou%, z nichž každý spotřebuje jeden stejný znak ze vstupního proudu. Může způsobit selhání funkce, pokud další znak v proudu neporovnává stejné.
- Znak mezery: Všechny následující znaky mezery jsou považovány za jeden znak mezery. Dále jsou ' n', ' t' a '' považována za stejná.
- Specifikace převodu: Má následující formát:
- Počáteční znak%, který určuje začátek
- Volitelný * zvaný znak potlačující přiřazení. Pokud je tento znak přítomen, vfwscanf () nepřiřadí výsledek žádnému přijímajícímu argumentu.
- Volitelné kladné celé číslo, které určuje maximální šířku pole. Určuje maximální počet znaků, které je vfwscanf () povoleno spotřebovat při provádění převodu určeného aktuální specifikací převodu.
- Volitelný modifikátor délky určující velikost přijímajícího argumentu.
- Specifikátor formátu převodu.
Specifikátor formátu Popis % Odpovídá doslovnému% C Shoduje se s jedním nebo více znaky. Pokud je definována šířka, odpovídá přesně šířkovým znakům. s Porovnává po sobě jdoucí znaky bez mezer. Pokud je definována šířka, odpovídá přesně šířkovým znakům nebo dokud není nalezen první prázdný znak. (soubor) Odpovídá neprázdné posloupnosti znaků z dané sady znaků. Pokud je na začátku množiny, pak jsou všechny znaky, které nejsou v množině, porovnány. d Odpovídá desítkovému číslu. i Odpovídá celému číslu. Ó Odpovídá osmičkové celé číslo bez znaménka. X nebo x Porovná hexadecimální celé číslo bez znaménka. u Odpovídá desetinnému číslu bez znaménka. A nebo a, E nebo e, F nebo f, G nebo g Odpovídá číslu s plovoucí desetinnou čárkou. n Vrátí počet dosud přečtených znaků. p Odpovídá posloupnosti znaků definované implementací definující ukazatel.
Obecný formát specifikátoru formátu je tedy:Specifikátor% (*) (width) (length)
- vlist: Seznam argumentů pro příjem vstupů.
vswscanf () Vrátit hodnotu
- Pokud bude úspěšná, vrátí funkce vfwscanf () počet úspěšně přečtených argumentů.
- Při selhání se vrátí EOF.
Příklad: Jak funguje funkce vswscanf ()?
#include #include #include void read( const wchar_t* buffer, const wchar_t* format,… ) ( va_list args; va_start (args, format); vswscanf (buffer, format, args); va_end (args); ) int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0fd7u00c6u20b9u2127u17d8"; wchar_t str(20); read(symbol, L"%ls", str); wprintf(L"Random Symbols"); for (int i=0; i
When you run the program, a possible output will be:
Random Symbols ࿗ Æ ₹ ℧ ៘