Namespaces
Variants

ungetwc

From cppreference.net
< c ‎ | io
定义于头文件 <wchar.h>
wint_t ungetwc ( wint_t ch, FILE * stream ) ;
(C95 起)

如果 ch 不等于 WEOF ,则将宽字符 ch 推入与流 stream 关联的输入缓冲区,使得后续从 stream 进行的读取操作将获取该宽字符。与流关联的外部设备不会被修改。

流重定位操作 fseek fsetpos rewind 会丢弃 ungetwc 的效果。

如果多次调用 ungetwc 而中间没有进行读取或重定位操作,该操作可能失败(换言之,保证存在大小为1的回退缓冲区,但更大的缓冲区由实现定义)。若成功执行了多次 ungetwc 操作,读取操作会按照与 ungetwc 调用相反的顺序获取被回退的宽字符。

如果 ch 等于 WEOF ,操作将失败且流不受影响。

成功调用 ungetwc 会清除文件结束状态标志 feof

对流的 ungetwc 调用成功时(无论是文本流还是二进制流),会以未指定的方式修改流位置指示器,但确保在所有被推回的宽字符通过读取操作被检索后,流位置指示器与调用 ungetwc 之前的值保持一致。

目录

参数

ch - 需回退的宽字符
stream - 要回退宽字符的文件流

返回值

成功时返回 ch

失败时返回 WEOF 且给定流保持不变。

参考文献

  • C11 标准 (ISO/IEC 9899:2011):
  • 7.29.3.10 ungetwc 函数 (第 425-426 页)
  • C99 标准 (ISO/IEC 9899:1999):
  • 7.24.3.10 ungetwc 函数 (第 370-371 页)

参考

将字符放回文件流
(函数)
从文件流获取宽字符
(函数)
C++ 文档 for ungetwc