当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ ungetwc()用法及代码示例


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++ ungetwc()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。