C ++ ungetwc () - Biblioteka standardowa C ++

Funkcja ungetwc () w C ++ wypycha odczytany wcześniej szeroki znak z powrotem do strumienia, aby można go było ponownie przeczytać.

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

ungetwc () prototyp

 wint_t ungetwc (wint_t ch, PLIK * strumień);

Funkcja ungetwc () wypycha szeroki znak ch z powrotem do bufora skojarzonego ze strumieniem pliku, chyba że ch jest równe WEOF. Jeśli ch jest równe WEOF, operacja kończy się niepowodzeniem i nie ma żadnych zmian w strumieniu.

Wywołania ungetwc () mogą się nie powieść, jeśli zostanie wywołana więcej niż jeden raz bez operacji odczytu lub zmiany położenia w środku.

Jeśli wywołanie ungetwc () powiedzie się, feof flagi statusu końca pliku zostaje wyczyszczone.

Zarówno dla strumienia tekstowego, jak i binarnego, pomyślne wywołanie ungetwc modyfikuje wskaźnik pozycji strumienia w nieokreślony sposób. Ale jest zagwarantowane, że po pobraniu wszystkich wypchniętych znaków za pomocą operacji odczytu, wskaźnik pozycji strumienia jest równy swojej wartości przed wywołaniem funkcji ungetwc ().

ungetwc () Parametry

  • ch: Szeroki znak do cofnięcia.
  • stream: strumień plików, w którym szeroki znak jest cofany.

ungetwc () Wartość zwracana

  • Po pomyślnym zakończeniu funkcja ungetwc () zwraca znak ch.
  • W przypadku błędu WEOF jest zwracany bez zmiany strumienia.

Przykład: Jak działa funkcja ungetwc ()?

 #include #include #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wint_t c; long value = 0; wchar_t str() = L"u0037u0031u0039u00b6u03ee"; FILE *fp = fopen("file.txt", "r+"); fputws(str,fp); rewind(fp); while(1) ( c = fgetwc(fp); if (iswdigit(c)) value = value*10 + c - L'0'; else break; ) ungetwc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

Po uruchomieniu programu możliwe wyjście to:

 Wartość = 719

Interesujące artykuły...