C ++ 'daki ungetwc () işlevi önceden okunan geniş karakteri tekrar okunabilmesi için akışa geri iter.
Ungetwc () işlevi başlık dosyasında tanımlanmıştır.
ungetwc () prototip
wint_t ungetwc (wint_t ch, FILE * akım);
Ungetwc () işlevi, ch geniş karakterli ch'yi, ch WEOF'a eşit olmadığı sürece dosya akışıyla ilişkili tampona geri iter. Ch, WEOF'a eşitse, işlem başarısız olur ve akışta değişiklik olmaz.
Ortada herhangi bir okuma veya yeniden konumlandırma işlemi olmadan birden fazla çağrılırsa ungetwc () çağrıları başarısız olabilir.
Ungetwc () 'ye yapılan bir çağrı başarılı olursa, feof dosya durum işaretinin sonu temizlenir.
Hem metin hem de ikili akış için, başarılı bir ungetwc çağrısı, akış konumu göstergesini belirtilmemiş bir şekilde değiştirir. Ancak, tüm geri itilen karakterlerin bir okuma işlemiyle geri getirilmesinden sonra, akış konumu göstergesinin ungetwc () çağrılmadan önceki değerine eşit olması garanti edilir.
ungetwc () Parametreler
- ch: Geri itilecek geniş karakter.
- stream: Geniş karakterin geri itildiği dosya akışı.
ungetwc () Dönüş değeri
- Başarı durumunda, ungetwc () işlevi ch karakterini döndürür.
- Başarısızlık durumunda, WEOF akışı değiştirmeden döndürülür.
Örnek: ungetwc () işlevi nasıl çalışır?
#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; )
Programı çalıştırdığınızda, olası bir çıktı:
Değer = 719