C++ 中的ungetwc() 函數將先前讀取的寬字符推回流中,以便可以再次讀取它。
ungetwc() 函數在<cwchar> 頭文件中定義。
ungetwc()原型
wint_t ungetwc( wint_t ch, FILE* stream );
ungetwc() 函數將寬字符 ch
推回與文件流關聯的緩衝區,除非 ch
等於 WEOF。如果ch
等於 WEOF,則操作失敗並且流中沒有變化。
如果多次調用 ungetwc() 而中間沒有任何讀取或重新定位操作,則調用可能會失敗。
如果對ungetwc() 的調用成功,則清除文件結束狀態標誌feof。
對於文本流和二進製流,成功調用 ungewc 會以未指定的方式修改流位置指示符。但可以保證,在通過讀取操作檢索到所有pushed-back 字符之後,流位置指示符等於調用ungetwc() 之前的值。
參數:
ch
:要推回的寬字符。stream
:寬字符被推回的文件流。
返回:
- 成功時,ungetwc() 函數返回字符
ch
。 - 失敗時返回 WEOF 而不更改流。
示例:ungetwc() 函數如何工作?
#include <cwchar>
#include <clocale>
#include <cwctype>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
setlocale(LC_ALL, "en_US.UTF-8");
wint_t c;
long value = 0;
wchar_t str[] = L"\u0037\u0031\u0039\u00b6\u03ee";
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;
}
運行程序時,可能的輸出將是:
Value = 719
相關用法
- C++ ungetc()用法及代碼示例
- C++ unordered_map cbegin用法及代碼示例
- C++ unordered_set max_bucket_count()用法及代碼示例
- C++ unordered_multimap reserve()用法及代碼示例
- C++ unordered_multiset get_allocator用法及代碼示例
- C++ unordered_set swap()用法及代碼示例
- C++ unordered_multimap rehash()用法及代碼示例
- C++ unordered_set equal_range用法及代碼示例
- C++ unordered_map rehash用法及代碼示例
- C++ unordered_map emplace_hint()用法及代碼示例
- C++ unordered_map key_eq()用法及代碼示例
- C++ unordered_multiset cend()用法及代碼示例
- C++ unordered_multimap get_allocator用法及代碼示例
- C++ unordered_map clear用法及代碼示例
- C++ unordered_multimap begin()、end()用法及代碼示例
- C++ unordered_multimap hash_function()用法及代碼示例
- C++ unordered_multiset insert()用法及代碼示例
- C++ unordered_multiset end()用法及代碼示例
- C++ unordered_set get_allocator()用法及代碼示例
- C++ unordered_set operators用法及代碼示例
注:本文由純淨天空篩選整理自 C++ ungetwc()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。