C++ IOS::rdstate() 函式



C++ 的std::ios::rdstate()函式用於管理輸入/輸出流的狀態。它返回流的狀態作為位掩碼,指示各種錯誤和狀態標誌。這些標誌指示各種錯誤,例如 failbit(邏輯操作失敗)、badbit(發生錯誤)、eofbit(檔案結束)。

語法

以下是 std::ios::rdstate() 函式的語法。

iostate rdstate() const;

引數

它不接受任何引數。

返回值

型別為 ios_base::iostate 的物件,可以包含以下任何狀態標誌成員常數的組合:

iostate

(成員常數)

指示 檢查狀態標誌的函式
good() eof() fail() bad() rdstate()
goodbit 沒有錯誤(零值 iostate true false false false goodbit
eofbit 在輸入操作中遇到檔案結束 false true false false eofbit
failbitI/O 操作中的邏輯錯誤 false false true false failbit
badbitI/O 操作中的讀/寫錯誤 false false true true badbit

異常

如果丟擲異常,則流中沒有任何更改。

資料競爭

訪問流物件。

併發訪問同一個流物件可能會導致資料競爭。

示例

讓我們看下面的例子,我們將檢查輸入操作後的流狀態。

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream a("112 TP");
    int x;
    a >> x;
    if (a.rdstate() & std::ios::failbit) {
        std::cout << "Stream Reading Failed.\n";
    } else {
        std::cout << "Stream Read Successfully.\n";
    }
    return 0;
}

輸出

以上程式碼的輸出如下:

Stream Read Successfully.

示例

考慮下面的例子,我們將檢查失敗的輸入操作後的流狀態。

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream ss("TutorialsPoint");
    int number;
    ss >> number;
    if (ss.rdstate() & std::ios::failbit) {
        std::cout << "Stream Failed To Read.\n";
    } else {
        std::cout << "Stream Read successfully.\n";
    }
    return 0;
}

輸出

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

Stream Failed To Read.

示例

在下面的例子中,我們將檢查檔案結束 (EOF) 操作後的流狀態。

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream a("WELCOME");
    std::string b;
    std::getline(a, b);
    if (a.rdstate() & std::ios::eofbit) {
        std::cout << "End Of File Reached.\n";
    } else {
        std::cout << "File Not At End.\n";
    }
    return 0;
}

輸出

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

End Of File Reached.
ios.htm
廣告