C++ istream::peek() 函式



C++ 的 std::istream::peek() 函式用於檢查輸入流中的下一個字元,但不提取它。它允許預覽即將到來的字元,同時將其保留在流中以備將來使用。它將下一個字元作為 int 或 EOF(如果到達流的末尾)返回。

與 get() 不同,get() 會從流中刪除字元,peek() 會保持流的狀態不變。

語法

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

int peek();

引數

它不接受任何引數。

返回值

此函式返回輸入序列中的下一個字元。

異常

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

資料競爭

修改流物件。

示例

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

#include <iostream>
#include<sstream>
int main()
{
    std::istringstream a("Welcome");
    char x = a.peek();
    std::cout << "Peeked Character : " << x << std::endl;
    return 0;
}

輸出

以上程式碼的輸出如下:

Peeked Character : W

示例

考慮以下示例,我們將使用 peek() 函式以及 ignore() 函式。

#include <iostream>
#include<sstream>
int main()
{
    std::string a = "ABC";
    std::istringstream x(a);
    x.ignore();
    char y = x.peek();
    std::cout << "Peeked Character : " << y << std::endl;
    return 0;
}

輸出

以下是以上程式碼的輸出:

Peeked Character : B

示例

讓我們看一下以下示例,我們將使用 peek() 以及 isalpha() 來檢查它是否為字母字元。

#include <iostream>
#include <cctype>
#include<sstream>
int main()
{
    std::string x = "1A2B";
    std::istringstream y(x);
    char a = y.peek();
    if (std::isalpha(a)) {
        std::cout << "Next character is alphabetic: " << a << std::endl;
    } else {
        std::cout << "Next character is not alphabetic: " << a << std::endl;
    }
    return 0;
}

輸出

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

Next character is not alphabetic: 1
istream.htm
廣告