2011-09-14 123 views
6

使用cout時,<iomanip>標頭中定義的默認格式化程序是什麼?換句話說,一旦我使用cout << fixed << setPrecision(2)將我的格式化程序設置爲fixed,我該如何更改它?或者,我將更改爲cout中`fixed`的反義詞是什麼?

回答

4

std::fixed相反的是std::scientific

(你找到操縱的this great answer一個很好的列表)。

1

您可以使用resetiosflags()取消設置任何標誌。

+0

有一個「默認」,我可以設置? – Moshe

+0

我相信默認是'std :: ios :: scientific'。 – Chad

+0

@Moshe:不幸的是,沒有簡單的方法來完全重置流。即使是我見過的最複雜的代碼(十多年前由詹姆斯·坎澤所着)也忽略了一些深奧的屬性,比如'iword'和'pword'。 (當然,James完全意識到了這些限制。)然而,你可以使用['std :: ios :: flags()'](http://www.cplusplus.com/reference/iostream/)的ios_base /標記/)。 – sbi

1

std::fixed相反的是std::scientific。這可能會爲你做。

但是,如果你想恢復更多的標誌,或者如果你需要以前狀態,而不是默認的可以使用更好的解決方案:

  1. std::resetiosflags機械手可以讓你特定的標誌重置他們的默認值;

  2. 這兩個ios::flags函數讓您保存和恢復格式標誌的以前的值。

+1

uhm,在「回到默認值」的意義上,「std :: fixed」的反義詞不是「std :: scientific」。它更像是一種自動格式切換模式。 –

相關問題