2012-10-21 3 views
0

왜 그렇게 많은 사람들이 같은 상황에서 표준 : : ostringstream 개체에 대한 플러시() 멤버 함수를 사용 :이 호출없이표준 : : 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를 사용해야합니다.

관련 문제