std::basic_ostream::sentry
性病:基本[医]Ostream::哨兵
class sentry; | | |
---|
类对象basic_ostream::sentry
的每个成员函数开始时,在局部范围内构造std::basic_ostream
它执行输出%28,包括格式化和未格式化的%29。它的构造函数准备输出流:检查流是否已经处于失败状态,刷新Tie%28%29%27D输出流,并在必要时执行其他实现定义的任务。在析构函数中执行实现定义的清理以及必要时对输出流的刷新,以便保证在输出期间抛出异常时会发生。
成员函数
(constructor) | constructs the sentry object. All the preparation tasks are done here (public member function) |
---|---|
(destructor) | finalizes the stream object after formatted output or after exception, if necessary (public member function) |
operator= | the assignment operator is deleted (public member function) |
operator bool | checks if the preparation of the stream object was successful (public member function) |
性病:基本[医]哨兵::哨兵
explicit sentry( std::basic_ostream | | |
---|
为格式化输出准备流。
如果os.good()是false,返回。否则,如果os.tie()不是空指针,调用os.tie()->flush()将输出序列与外部流同步。在准备过程中,构造函数可以调用setstate(failbit)%28std::ios_base::failure29%。
如果准备完成后,is.good() == true
,然后任何后续的调用operator bool
会回来true
...
参数
os | - | output stream to prepare |
---|
例外
std::ios_base::failure
如果出现文件结束情况。
性病:基本[医]哨兵::~哨兵
~sentry( | | |
---|
如果(os.flags()&std::ios_base::unitbuf)&&!std::uncaught_exception()&& os.good())是true,电话os.rdbuf()->pubsync().如果该函数返回-1、集badbit在os.rdstate()而不传播异常。
性病:基本[医]Ostream::哨兵::操作者bool
explicit operator bool() const; | | |
---|
检查输出流的准备是否成功。
参数
%280%29
返回值
true
如果输出流的准备成功,false
否则。
例
二次
#include <iostream>
#include <sstream>
struct Foo
{
char n[6];
};
std::ostream& operator<<(std::ostream& is, Foo& f)
{
std::ostream::sentry s(is
if (s) {
is.write(f.n, 5
}
return is;
}
int main()
{
Foo f = { "abcde" };
std::cout << f << '\n';
}
二次
产出:
二次
abcde
二次
另见
operator<< | inserts formatted data (public member function) |
---|
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。