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
广告