Funkce swscanf () v C ++ čte široký znak z široké řetězcové vyrovnávací paměti.
Funkce swscanf () je definována v hlavičkovém souboru.
prototyp swscanf ()
int swscanf (const wchar_t * buffer, const wchar_t * formát,…);
Funkce swscanf () čte data z vyrovnávací paměti a ukládá hodnoty do příslušných proměnných.
parametry swscanf ()
- buffer: Ukazatel na vyrovnávací paměť širokého řetězce, ze které 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, swscanf () 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é může swscanf () 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)
- …: Další další argumenty pro příjem dat. Vyskytují se v pořadí podle specifikátoru formátu.
swscanf () Vrátí hodnotu
- Funkce swscanf () vrací počet úspěšně přiřazených přijímajících argumentů.
- Pokud dojde k selhání před přiřazením prvního přijímajícího argumentu, vrátí se EOF .
Příklad: Jak funguje funkce swscanf ()?
#include #include int main() ( wchar_t buffer(100) = L"Theta u03b8"; wchar_t symbol, desc(10); setlocale(LC_ALL, "en_US.UTF-8"); swscanf(buffer, L"%ls %lc", desc, &symbol); wprintf(L"%lc is %ls", symbol, desc); return 0; )
Při spuštění programu bude možný výstup:
θ je Theta