📜  C++中的basic_istream :: putback()及其示例(1)

📅  最后修改于: 2023-12-03 14:39:56.831000             🧑  作者: Mango

C++中的basic_istream::putback()及其示例

在C++中,basic_istream是一个抽象类,它定义了输入流的基本概念和操作。其中,putback()函数是它的成员函数之一。

basic_istream::putback()

putback()函数的作用是在当前输入位置前插入一个字符。可以将其理解为是把一个字符“拿出来”放到上一个位置,以达到一定程度上的回退的效果。

putback()函数的声明如下:

basic_istream& putback(char_type ch);

其中,ch参数是要插入的字符。

如果插入成功,则返回输入流的引用。如果插入失败,则返回NULL(即0)。

需要注意的是,putback()函数只能在读取字符型输入时使用,而且只能将一个字符插入到前面。如果需要插入多个字符,可以多次使用putback()函数。

示例

以下是一个基本示例,演示了basic_istream::putback()函数的用法。

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello World!";
    istringstream iss(str);

    char ch;

    iss >> ch;
    cout << "First character: " << ch << endl;

    iss.putback(ch);
    iss >> ch;
    cout << "First character again: " << ch << endl;

    return 0;
}

输出:

First character: H
First character again: H

在这个例子中,我们创建了一个字符串流istringstream,它的内容是"Hello World!"。

首先,我们从流iss中读取第一个字符'H',并打印出来。接下来,我们使用putback()函数将字符'H'放回到istream中,然后再次读取字符,这次我们又读取到了字符'H'。

这个例子只是一个简单的演示,实际中我们通常会将字符插入到更早的位置,以便能够回退到更早的状态。

总之,basic_istream::putback()函数使我们能够回退输入流的状态,以便重新读取数据。它在流操作中非常有用,尤其是在处理复杂的输入格式时。