C++ istream::unget() 函数



C++ 的std::istream::unget()函数用于将从输入流中提取的最后一个字符放回,将流的内部位置指示器向后移动一个字符。这允许在后续输入操作中再次读取该字符。

语法

以下是std::istream::unget()函数的语法。

istream& unget();

参数

它不接受任何参数。

返回值

此函数返回basic_istream对象(*this)。

异常

如果抛出异常,则对象处于有效状态。

数据竞争

修改流对象。

示例

在下面的示例中,我们将考虑unget()函数的基本用法。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("Namaste");
    char a;
    x.get(a);
    std::cout << "Read: " << a << std::endl;
    x.unget();
    x.get(a);
    std::cout << "Read again: " << a << std::endl;
    return 0;
}

输出

以上代码的输出如下:

Read: N
Read again: N

示例

考虑以下示例,我们将多次读取后使用unget()函数。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("TutorialsPoint");
    char x;
    a.get(x);
    std::cout << "First Read: " << x << std::endl;
    a.get(x);
    std::cout << "Second Read: " << x << std::endl;
    a.unget();
    a.get(x);
    std::cout << "Third Read: " << x << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

First Read: T
Second Read: u
Third Read: u

示例

让我们来看下面的例子,我们将在一个循环中使用unget()函数。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("1123245");
    char x;
    while (a.get(x)) {
        if (x == '4') {
            a.unget();
            break;
        }
        std::cout << x << " ";
    }
    std::cout << std::endl;
    a.get(x);
    std::cout << "Character put back: " << x << std::endl;
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

1 1 2 3 2 
Character put back: 4
istream.htm
广告