Hàm ungetwc () trong C ++ đẩy ký tự rộng đã đọc trước đó trở lại luồng để có thể đọc lại.
Hàm ungetwc () được định nghĩa trong tệp tiêu đề.
nguyên mẫu ungetwc ()
wint_t ungetwc (wint_t ch, FILE * stream);
Hàm ungetwc () đẩy ký tự rộng ch trở lại vùng đệm được liên kết với luồng tệp trừ khi ch bằng WEOF. Nếu ch bằng WEOF, hoạt động không thành công và không có thay đổi trong luồng.
Các cuộc gọi đến ungetwc () có thể không thành công nếu nó được gọi nhiều lần mà không có bất kỳ thao tác đọc hoặc định vị lại ở giữa.
Nếu một cuộc gọi đến ungetwc () thành công, cờ trạng thái kết thúc của tệp feof sẽ bị xóa.
Đối với cả luồng văn bản và luồng nhị phân, lệnh gọi thành công tới ungetwc sẽ sửa đổi chỉ báo vị trí luồng theo cách không xác định. Nhưng nó được đảm bảo rằng sau khi tất cả các ký tự được đẩy lùi được truy xuất bằng thao tác đọc, chỉ báo vị trí luồng sẽ bằng với giá trị của nó trước khi gọi ungetwc ().
Tham số ungetwc ()
- ch: Ký tự rộng bị đẩy lùi.
- stream: Dòng tệp trong đó ký tự rộng được đẩy lùi lại.
ungetwc () Giá trị trả về
- Khi thành công, hàm ungetwc () trả về ký tự ch.
- Khi không thành công, WEOF được trả lại mà không thay đổi luồng.
Ví dụ: Hàm ungetwc () hoạt động như thế nào?
#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; )
Khi bạn chạy chương trình, đầu ra có thể sẽ là:
Giá trị = 719