0
我有以下代碼:爲什麼setw和width不適用於ostringstream?
template<typename _Tp>
std::string string_from_number(_Tp number, int precision = 5)
{
std::ostringstream oss;
oss.width(precision+1);
oss<<number;
return oss.str();
}
但是字符串的長度不是5的預期,但保持默認。
替換oss.width
至oss<<std::setw
也不起作用。 我在做什麼錯?
編輯:
的問題,如果數字是double類型的清晰顯示說0.123456789。
默認8?爲什麼是默認的8?你能展示一個完整的代碼示例,你的期望輸出和你的實際輸出嗎?因爲對我來說,這正是我所期望的。當使用默認值5時,它返回一個長度爲6的字符串。 [Demo](http://liveworkspace.org/code/61e41e6cdc67bbdbd87261c0bedd9210) –
您是否在談論浮點數中顯示的位數?你需要的函數是['precision'](http://en.cppreference.com/w/cpp/io/ios_base/precision),而不是'width'。 –
你是對的,我認爲默認值可能是9.感謝測試,即使使用你的代碼,如果我使用雙精度作爲輸入,並說精度爲2,它堅持默認寬度... –