C ++ ungetwc () - C ++ Standardbibliothek

Die Funktion ungetwc () in C ++ schiebt das zuvor gelesene breite Zeichen zurück in den Stream, damit es erneut gelesen werden kann.

Die Funktion ungetwc () ist in der Header-Datei definiert.

ungetwc () Prototyp

 wint_t ungetwc (wint_t ch, FILE * stream);

Die Funktion ungetwc () schiebt das breite Zeichen ch zurück in den Puffer, der dem Dateistream zugeordnet ist, es sei denn, ch ist gleich WEOF. Wenn ch gleich WEOF ist, schlägt die Operation fehl und es gibt keine Änderung im Stream.

Aufrufe von ungetwc () können fehlschlagen, wenn es mehrmals aufgerufen wird, ohne dass in der Mitte ein Lese- oder Neupositionierungsvorgang ausgeführt wird.

Wenn ein Aufruf von ungetwc () erfolgreich ist, wird das Flag für das Ende des Dateistatus gelöscht.

Sowohl für Text- als auch für Binär-Streams ändert ein erfolgreicher Aufruf von ungetwc die Stream-Positionsanzeige auf nicht spezifizierte Weise. Es ist jedoch garantiert, dass nach dem Abrufen aller zurückgeschobenen Zeichen mit einer Leseoperation die Stream-Positionsanzeige ihrem Wert entspricht, bevor ungetwc () aufgerufen wird.

ungetwc () Parameter

  • ch: Der breite Charakter, der zurückgeschoben werden soll.
  • stream: Dateistream, in dem das breite Zeichen zurückgeschoben wird.

ungetwc () Rückgabewert

  • Bei Erfolg gibt die Funktion ungetwc () das Zeichen ch zurück.
  • Bei einem Fehler wird WEOF zurückgegeben, ohne den Stream zu ändern.

Beispiel: Wie funktioniert die Funktion 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; )

Wenn Sie das Programm ausführen, ist eine mögliche Ausgabe:

 Wert = 719

Interessante Beiträge...