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