一部のC++コードをUnixからLinux(Red Hat)に移植しています。
私は次のパターンに遭遇しました:
ostream& myfunction(ostream& os)
{
if (os.opfx())
{
os << mydata;
os.osfx();
}
return os;
}
これらの機能はopfx、osfxRedHat4.5では使用できません。私はここで機能を使用するための提案を見ましたostream::sentry:
ostream& myfunction_ported(ostream& os)
{
ostream::sentry ok(os);
if (ok)
{
os << mydata;
}
return os;
}
ここopfxから、ストリームの状態を確認してからフラッシュして続行することが目的であることがわかります。
私の質問:
ostream関数は、ストリームを操作する前に、すでにストリームの状態をチェックしていると思いました。これは本当ですか?これはある時点で真実ではなかったのですか?
交換opfxはsentry必要ですか?まだ私に与えていないものは何sentryを私にoperator<<与えますか?