C ++ vfwscanf () - biblioteka standardowa C ++

Funkcja vfwscanf () w C ++ służy do odczytywania szerokiego ciągu znaków ze strumienia pliku.

Funkcja vfwscanf () jest zdefiniowana w pliku nagłówkowym.

Prototyp vfwscanf ()

 int vfwscanf (PLIK * strumień, const wchar_t * format, va_list vlist);

Funkcja vfwscanf () odczytuje dane ze strumienia strumienia plików i zapisuje wartości w odpowiednich lokalizacjach zgodnie z definicją vlist.

Parametry vfwscanf ()

  • stream: wejściowy strumień pliku, z którego będą odczytywane 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.
    Specyfikatory formatu
    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.

vfwscanf () 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 vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Po uruchomieniu programu możliwe wyjście to:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Interesujące artykuły...