C ++ funkcija ungetwc () nustumia anksčiau perskaitytą plačią simbolį atgal į srautą, kad jį būtų galima perskaityti dar kartą.
Funkcija ungetwc () yra apibrėžta antraštės faile.
ungetwc () prototipas
wint_t ungetwc (wint_t ch, FILE * srautas);
Funkcija ungetwc () stumia plačią raidę ch atgal į buferį, susietą su failų srautu, nebent ch yra lygus WEOF. Jei ch yra lygus WEOF, operacija nepavyksta ir sraute nėra pokyčių.
Skambinti „ungetwc“ () gali nepavykti, jei jis iškviečiamas daugiau nei vieną kartą, neskaitant viduryje jokių skaitymo ar perkėlimo operacijų.
Jei skambutis į „ungetwc“ () yra sėkmingas, failo būsenos žymos pabaiga išvaloma.
Tiek teksto, tiek dvejetainio srauto atveju sėkmingas skambutis „ungetwc“ nenustatytu būdu pakeičia srauto padėties rodiklį. Tačiau garantuojama, kad po to, kai skaitymo operacijos metu gaunami visi atstumti simboliai, srauto padėties indikatorius yra lygus jo vertei prieš iškviečiant ungetwc ().
ungetwc () parametrai
- ch: Platus personažas, kurį reikia atstumti.
- srautas: failų srautas, kur platus simbolis nustumiamas atgal.
ungetwc () Grąžinimo vertė
- Pasisekus funkcija ungetwc () grąžina simbolį ch.
- Sugedus WEOF grąžinamas nekeičiant srauto.
Pavyzdys: Kaip veikia funkcija 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; )
Kai paleisite programą, galimas rezultatas bus:
Vertė = 719