C++ istream::putback() 函式



C++ 的std::istream::putback() 函式用於將一個字元放回輸入流緩衝區。這允許重新讀取之前從流中提取的字元。當呼叫此函式時,該字元將放置在緩衝區的開頭,使其可用於後續的輸入操作。

語法

以下是 std::istream::putback() 函式的語法。

istream& putback (char c);

引數

  • c − 表示要放回的字元。

返回值

此函式返回 basic_istream 物件(*this)。

異常

如果丟擲異常,則物件處於有效狀態。

資料競爭

修改流物件。

示例

在以下示例中,我們將考慮 putback() 函式的基本用法。

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

輸出

以上程式碼的輸出如下:

Read: W
Read again: W

示例

考慮以下示例,我們將放回多個字元。

#include <iostream>
#include<sstream>
int main()
{
    std::istringstream a("XYZ");
    char b;
    a >> b;
    std::cout << "Read: " << b << std::endl;
    a.putback(b);
    a >> b;
    a.putback(b);
    a >> b;
    std::cout << "Read again: " << b << std::endl;
    a >> b;
    std::cout << "Read again: " << b << std::endl;
    return 0;
}

輸出

以下為上述程式碼的輸出:

Read: X
Read again: X
Read again: Y

示例

讓我們看一下以下示例,我們將結合使用 putback() 函式和 peek() 函式。

#include <iostream>
int main()
{
    std::istream& is = std::cin;
    char x;
    std::cout << "Enter A Character : ";
    x = is.peek();
    std::cout << "Peeked Character: " << x << std::endl;
    is.get(x);
    std::cout << "Read Character: " << x << std::endl;
    is.putback(x);
    x = is.peek();
    std::cout << "After putback, Peeked Again: " << x << std::endl;
    return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Enter A Character : ABC
Peeked Character: A
Read Character: A
After putback, Peeked Again: A
istream.htm
廣告

© . All rights reserved.