C ++ ungetwc () - Libreria standard C ++

La funzione ungetwc () in C ++ rimanda il carattere wide precedentemente letto nello stream in modo che possa essere letto di nuovo.

La funzione ungetwc () è definita nel file di intestazione.

prototipo ungetwc ()

 wint_t ungetwc (wint_t ch, FILE * stream);

La funzione ungetwc () rimanda il carattere largo ch al buffer associato al flusso di file a meno che ch non sia uguale a WEOF. Se ch è uguale a WEOF, l'operazione non riesce e non ci sono modifiche nel flusso.

Le chiamate a ungetwc () possono fallire se viene chiamato più di una volta senza alcuna operazione di lettura o riposizionamento nel mezzo.

Se una chiamata a ungetwc () ha successo, il flag di stato di fine file feof viene cancellato.

Sia per il flusso di testo che per quello binario, una chiamata riuscita a ungetwc modifica l'indicatore di posizione del flusso in un modo non specificato. Ma è garantito che dopo che tutti i caratteri respinti sono stati recuperati con un'operazione di lettura, l'indicatore di posizione del flusso è uguale al suo valore prima di chiamare ungetwc ().

Parametri ungetwc ()

  • ch: Il carattere ampio da respingere.
  • stream: flusso di file in cui il carattere largo viene respinto.

ungetwc () Restituisce il valore

  • In caso di successo, la funzione ungetwc () restituisce il carattere ch.
  • In caso di errore WEOF viene restituito senza modificare il flusso.

Esempio: come funziona la funzione 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; )

Quando esegui il programma, un possibile output sarà:

 Valore = 719

Articoli interessanti...