La fonction ungetwc () en C ++ repousse le caractère large précédemment lu dans le flux afin qu'il puisse être lu à nouveau.
La fonction ungetwc () est définie dans le fichier d'en-tête.
prototype ungetwc ()
wint_t ungetwc (wint_t ch, FILE * stream);
La fonction ungetwc () repousse le caractère large ch vers le tampon associé au flux de fichiers sauf si ch est égal à WEOF. Si ch est égal à WEOF, l'opération échoue et il n'y a pas de changement dans le flux.
Les appels à ungetwc () peuvent échouer s'il est appelé plus d'une fois sans aucune opération de lecture ou de repositionnement au milieu.
Si un appel à ungetwc () réussit, l'indicateur d'état de fin de fichier feof est effacé.
Pour le texte et le flux binaire, un appel réussi à ungetwc modifie l'indicateur de position du flux d'une manière non spécifiée. Mais il est garanti qu'après la récupération de tous les caractères repoussés avec une opération de lecture, l'indicateur de position du flux est égal à sa valeur avant d'appeler ungetwc ().
Paramètres ungetwc ()
- ch: Le caractère large à repousser.
- stream: flux de fichier où le caractère large est repoussé.
ungetwc () Valeur de retour
- En cas de succès, la fonction ungetwc () renvoie le caractère ch.
- En cas d'échec, WEOF est renvoyé sans modifier le flux.
Exemple: Comment fonctionne la fonction 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; )
Lorsque vous exécutez le programme, une sortie possible sera:
Valeur = 719