std::basic_istream::unget

来自cppreference.com
< cpp‎ | io‎ | basic istream
basic_istream& unget();

令最近释出的字符再次可用。

首先清除 eofbit

(C++11 起)

然后函数表现为无格式输入函数 (UnformattedInputFunction) 。构造并检查 sentry 对象后,若设置了任何 ios_base::iostate 标志,则函数设置 failbit 并返回。否则,调用 rdbuf()->sungetc()

rdbuf()->sungetc() 返回 Traits::eof() ,则调用 setstate(badbit)

任何情况下,设置 gcount() 计数器为零。

目录

[编辑] 参数

(无)

[编辑] 返回值

*this

[编辑] 异常

若出现错误(错误状态标志不是 goodbit )并且设置了 exceptions() 为对该状态抛出则为 failure

若内部操作抛出异常,则捕获它并设置 badbit 。若对 badbit 设置了 exceptions() ,则重抛该异常。

[编辑] 示例

#include <sstream>
#include <iostream>
 
int main()
{
    std::istringstream s1("Hello, world.");
    char c1 = s1.get();
    if (s1.unget())
    {
        char c2 = s1.get();
        std::cout << "Got: " << c1 << " got again: " << c2 << '\n';
    }
}

输出:

Got: H got again: H

[编辑] 参阅

回移一位输出序列中的下一位置指针
(std::basic_streambuf 的公开成员函数) [编辑]
从流中读并取走(移除类似指针向下一个元素移动)一个字符
(公开成员函数) [编辑]
仅读出但不取走(不移除类似指针并未移动)一个字符
(公开成员函数) [编辑]
往输入流中退回一个字符
(公开成员函数) [编辑]