c++ - 为什么 setw 和宽度不适用于 ostringstream?

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

编辑:

如果数字是 double 类型,比如 0.123456789,问题就会很明显。

最佳答案

控制一个 float 显示的位数,你要的函数是precision , 不是 width .如果您想确保获得以固定表示法(而不是科学表示法)显示的数字,还请查看格式标志 fixed , 与 setf 一起使用成员函数。

关于c++ - 为什么 setw 和宽度不适用于 ostringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149678/

相关文章:

c++ - 由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜测 "100"

python - 如何根据索引替换子字符串?

java - System.getProperty ("path.separator")未按预期工作

c++ - 使用抽象类的 STL 排序

c++ - C++中使用双指针的动态二维数组

c++ - 当存储在 std::vector 属性中时,我可以删除析构函数中的指针吗?

ruby - 在 Ruby 中,如何替换字符串中的问号字符?

c++ - 使用二进制谓词在 find_first_of 函数上给出错误

c++ - 如何更好地使用 STL 和仿函数来获得滑动窗口最小值的解决方案

c++ - 哪些客户正在使用驱动程序?