Funkcja vfwscanf () w C ++ służy do odczytywania szerokiego ciągu znaków z bufora szerokiego ciągu.
Funkcja vfwscanf () jest zdefiniowana w pliku nagłówkowym.
prototyp vswscanf ()
int vswscanf (const wchar_t * bufor, format const wchar_t *, va_list vlist);
Funkcja vfwscanf () odczytuje dane z bufora szerokiego bufora łańcuchowego i zapisuje wartości w odpowiednich lokalizacjach, zgodnie z definicją vlist.
Parametry vswscanf ()
- bufor: wskaźnik do szerokiego ciągu zakończonego wartością null, z którego mają zostać odczytane dane.
- format: wskaźnik do ciągu znaków szerokich zakończonych znakiem null, który określa sposób odczytywania danych wejściowych. Składa się ze specyfikatorów formatu zaczynających się od%.
Ciąg formatu składa się z następujących części:- Znaki inne niż białe znaki, z wyjątkiem%, z których każdy zużywa jeden identyczny znak ze strumienia wejściowego. Może to spowodować niepowodzenie funkcji, jeśli następny znak w strumieniu nie jest równy.
- Białe znaki: wszystkie następujące po sobie białe znaki są traktowane jako pojedyncze białe znaki. Ponadto „ n”, „ t” i „” są uważane za takie same.
- Specyfikacja konwersji: ma następujący format:
- Początkowy znak%, który określa początek
- Opcjonalny *, nazywany znakiem tłumiącym przypisanie. Jeśli ten znak jest obecny, vfwscanf () nie przypisuje wyniku do żadnego otrzymanego argumentu.
- Opcjonalna dodatnia liczba całkowita, która określa maksymalną szerokość pola. Określa maksymalną liczbę znaków, jaką vfwscanf () może wykorzystać podczas wykonywania konwersji określonej w bieżącej specyfikacji konwersji.
- Opcjonalny modyfikator długości określający rozmiar otrzymywanego argumentu.
- Specyfikator formatu konwersji.
Specyfikator formatu Opis % Dopasowuje dosłowne% do Dopasowuje pojedynczy znak lub wiele znaków. Jeśli zdefiniowano szerokość, dopasowuje dokładnie znaki szerokości. s Dopasowuje kolejne znaki niebędące białymi znakami. Jeśli zdefiniowano szerokość, dopasowuje dokładnie znaki szerokości lub do znalezienia pierwszej spacji. (zestaw) Dopasowuje niepusty ciąg znaków z podanego zestawu znaków. Jeśli występuje na początku zbioru, to dopasowywane są wszystkie znaki spoza zbioru. re Dopasowuje dziesiętną liczbę całkowitą. ja Dopasowuje liczbę całkowitą. o Dopasowuje ósemkową liczbę całkowitą bez znaku. X lub x Dopasowuje szesnastkową liczbę całkowitą bez znaku. u Dopasowuje dziesiętną liczbę całkowitą bez znaku. A lub a, E lub e, F lub f, G lub g Dopasowuje liczbę zmiennoprzecinkową. n Zwraca liczbę odczytanych dotychczas znaków. p Dopasowuje sekwencję znaków zdefiniowaną przez implementację definiującą wskaźnik.
Zatem ogólny format specyfikatora formatu to:Specyfikator% (*) (szerokość) (długość)
- vlist: lista argumentów do odbierania danych wejściowych.
vswscanf () Wartość zwracana
- Jeśli się powiedzie, funkcja vfwscanf () zwraca liczbę pomyślnie odczytanych argumentów.
- W przypadku niepowodzenia zwracany jest EOF.
Przykład: Jak działa funkcja 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 ࿗ Æ ₹ ℧ ៘