为什么setw和width对ostringstream不起作用?

时间:2012-10-31 00:43:08

标签: c++ string stl iostream

我有以下代码:

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也不起作用。 我做错了什么?

编辑:

如果数字是双重类型,如0.123456789,则问题清楚显示。

1 个答案:

答案 0 :(得分:3)

为了控制浮点数中显示的位数,您需要的功能是precision,而不是width。如果您想确保以固定符号(而不是科学)显示数字,请查看与fixed成员函数一起使用的格式标志setf