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
廣告
© . All rights reserved.