2012-10-21 49 views
0

爲什麼這麼多的人使用的std :: ostringstream對象的flush()成員函數的情況是這樣的:的std :: ostringstream和沖洗成員函數

#include <iostream> 
#include <sstream> 

int main() 
{ 
    float f = 12.345f/100; 
    std::ostringstream ios; 
    ios << f; 
    ios.flush(); 
    std::cout << f << " : " << ios.str() << std::endl; 
} 

輸出沒有這個電話將是相同的。

那麼,爲什麼?什麼時候應該使用flush()成員函數?

+0

好問題。在一般情況下,您可能無法真正確定流的類型,並且如果有人將代碼更改爲其他流,則可以防止破壞。這裏的性能損失很小。 – pmr

回答

2

在這種情況下沒有理由使用flush。我很想知道這麼多人在哪裏。就我個人而言,我不記得曾經看到使用過那樣的沖水。大多數時候我會把這樣的代碼放到迷信中去。有人有一個他們從來不明白的錯誤,但他們嘗試着沖洗,神祕地發現錯誤消失了。使用刷新並不是錯誤消失的真正原因,但它被卡住了。

當您想要立即輸出緩衝數據時,您應該在緩衝流上使用刷新。