1
我将一些C++代码从Unix移植到Linux(Red Hat)。从Unix到Linux移植ostream :: opfx/osfx
我遇到了以下模式:
ostream& myfunction(ostream& os)
{
if (os.opfx())
{
os << mydata;
os.osfx();
}
return os;
}
功能opfx
和osfx
不可用红帽4.5。我看到一个建议here使用ostream::sentry
功能:
ostream& myfunction_ported(ostream& os)
{
ostream::sentry ok(os);
if (ok)
{
os << mydata;
}
return os;
}
我从here看到的opfx
目的是冲洗,并继续之前验证流的状态。
我的问题:
我以为ostream
功能已经检查过流状态的流进行操作之前。这是真的?这在某些时候是不是真的?
是否需要替换opfx
和sentry
? sentry
给我说operator<<
不是已经给我了吗?
谢谢你的建议。我在输入两个样品时错过了退货声明,并修复了它。 – Bill 2010-08-13 18:51:30