我有以下代碼(簡化):如何保留C++流的格式?
ostringstream oss;
oss << "Text ";
oss << hex << uppercase;
oss.width(8);
oss.fill('0');
oss << var1 << " ";
oss << var2 << " ";
oss << dec << nouppercase;
oss.width(1);
oss << var3 << " another text." << endl;
string result = oss.str();
// work with result...
凡var1
,var2
是unsigned int
的和var3
爲int
。這個想法是創建一個字符串,其中var1
和var2
按照十六進制數字(但沒有0x
)和var3
作爲常規整數形成。我發現些什麼,只有第一個數字正確格式化,第二個是不是用零填充:
Text 000AF00C 3B7FF 1 another text.
一段時間,我發現,設置寬度和填充的參數重新修復之後。有沒有辦法避免爲每個數字反覆指定這些格式化規則?格式化變量的數量遠高於2,這只是一個簡單的例子。將所有這些包裝到一個函數中是一種選擇,但我真的很想了解如何使用ostringstream
來保存格式。
您確定它不僅僅是'width'被重置,因爲這將是您的實施中的錯誤? – 2010-07-07 11:02:13
也許它只是寬度,沒有單獨測試寬度/填充。 – PeterK 2010-07-07 11:05:41