La función ungetwc () en C ++ empuja el carácter ancho leído previamente a la secuencia para que pueda leerse nuevamente.
La función ungetwc () se define en el archivo de encabezado.
ungetwc () prototipo
wint_t ungetwc (wint_t ch, ARCHIVO * flujo);
La función ungetwc () empuja el carácter ancho ch de regreso al búfer asociado con el flujo de archivos a menos que ch sea igual a WEOF. Si ch es igual a WEOF, la operación falla y no hay cambios en la secuencia.
Las llamadas a ungetwc () pueden fallar si se llama más de una vez sin ninguna operación de lectura o reposicionamiento en el medio.
Si una llamada a ungetwc () tiene éxito, se borra el indicador de fin de estado de archivo feof.
Tanto para texto como para flujo binario, una llamada exitosa a ungetwc modifica el indicador de posición de flujo de una manera no especificada. Pero está garantizado que después de recuperar todos los caracteres rechazados con una operación de lectura, el indicador de posición del flujo es igual a su valor antes de llamar a ungetwc ().
Parámetros de ungetwc ()
- ch: El carácter ancho que se va a rechazar.
- flujo: flujo de archivo donde el carácter ancho se retrasa.
ungetwc () Valor de retorno
- Si tiene éxito, la función ungetwc () devuelve el carácter ch.
- En caso de falla, WEOF se devuelve sin cambiar la secuencia.
Ejemplo: ¿Cómo funciona la función 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; )
Cuando ejecute el programa, una posible salida será:
Valor = 719