我正在将一些 C++ 代码从 Unix 移植到 Linux(Red Hat)。
我遇到了以下模式:
ostream& myfunction(ostream& os)
{
if (os.opfx())
{
os << mydata;
os.osfx();
}
return os;
}
在 Red Hat 4.5 下这些功能opfx
和osfx
不可用。我在这里看到了使用该ostream::sentry
功能的建议:
ostream& myfunction_ported(ostream& os)
{
ostream::sentry ok(os);
if (ok)
{
os << mydata;
}
return os;
}
我从这里看到 的目的opfx
是在刷新并继续之前验证流状态。
我的问题:
我认为这些ostream
函数在对流进行操作之前已经检查了流状态。这是真的?这在某些时候不是真的吗?
opfx
是否需要更换sentry
?什么sentry
给了我operator<<
尚未给我的东西?