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