2011-09-14 9 views
6

cout을 사용할 때 <iomanip> 헤더에 정의 된 기본 포맷터는 무엇입니까? 즉, cout << fixed << setPrecision(2)을 사용하여 포맷터를 fixed으로 설정하면 어떻게 다시 바꿀 수 있습니까? 또는 무엇을 다시 변경합니까 ~?cout에서`fixed`의 반대는 무엇입니까?

답변

4

std::fixed의 반대는 std::scientific입니다.

는 (당신은 this great answer에서 매니퓰레이터의 좋은 목록을 찾을 수 있습니다.)

1

resetiosflags()을 사용하여 플래그를 설정 해제 할 수 있습니다.

+0

참조 할 수있는 C++ 03이에 달성하기 위해? – Moshe

+0

기본값은'std :: ios :: scientific'라고 생각합니다. – Chad

+0

@Moshe : 유감스럽게도 스트림을 완전히 재설정하는 간단한 방법은 없습니다. 필자가 보았던 가장 정교한 코드조차도 (James Kanze에 의해, 10 년 전) iword와 pword와 같은 일부 비밀 속성에 빠져있다. (물론 제임스는 한계를 완전히 인식하고있었습니다.) 그러나''std :: ios :: flags()'] (http://www.cplusplus.com/reference/iostream/)로는 꽤 멀어 질 수 있습니다. ios_base/flags /). – sbi

1

std::fixed의 반대가 std::scientific입니다. 그것은 당신을 위해 할 수도 있습니다.

그러나, 당신은 당신이 더 나은 솔루션을 사용할 수 있습니다 대신 기본적으로는 이전 상태를 필요로하는 경우 또는, 더 플래그를 복원하려면 :

  1. std::resetiosflags 조작하는 당신이 특정 플래그를 재설정 할 수 있습니다 그들의 디폴트;

  2. 두 개의 ios::flags 함수를 사용하면 이전 형식 플래그 값을 저장하고 복원 할 수 있습니다.

+1

어, "기본값으로 돌아 가기"라는 의미에서'std :: fixed'의 반대는'std :: scientific'가 아닙니다. 자동 포맷 전환 모드와 비슷합니다. –