Funkce vwscanf () v C ++ se používá ke čtení širokopásmového řetězce ze stdin.
Funkce vwscanf () je definována v hlavičkovém souboru.
prototyp vwscanf ()
int vwscanf (formát const wchar_t *, va_list vlist);
Funkce vwscanf () čte data ze stdin a ukládá hodnoty do příslušných umístění definovaných vlist.
Parametry vwscanf ()
- 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, vwscanf () 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 vwscanf () 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ů.
vwscanf () Vrátit hodnotu
- Pokud bude úspěšná, vrátí funkce vwscanf () počet úspěšně přečtených argumentů.
- Při selhání se vrátí EOF.
Příklad: Jak funguje funkce vwscanf ()?
#include #include #include void read( const wchar_t* format,… ) ( va_list args; va_start (args, format); vwscanf (format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t name(50); wprintf(L"What is your name? "); read(L" %ls", name); wprintf(L"Hello %ls", name); return 0; )
Při spuštění programu bude možný výstup:
Jak se jmenuješ? Götz Dobrý den, Götz