C++11 std::to_string(double) - 没有尾随零

标签 c++ stl c++11

今天试用了C++11 STL的一些新功能,遇到了std::to_string

可爱,可爱的一组功能。为一个双字符串转换创建一个字符串流对象对我来说总是有点过头了,所以我很高兴我们现在可以做这样的事情:

std::cout << std::to_string(0.33) << std::endl;

结果?

0.330000

我对此并不完全满意。有没有办法告诉 std::to_string 省略尾随零?我搜索了互联网,但据我所知,该函数只接受一个参数(要转换的值)。回到使用字符串流的“过去”,您可以设置流的宽度,但我宁愿不转换回来。

之前有人遇到过这个问题/有解决方案吗?一些 StackOverflow 搜索结果一无所获。

(C++11 STL 引用:http://en.cppreference.com/w/cpp/string/basic_string/to_string)

最佳答案

如果您只想删除尾随零,那很简单。

std::string str = std::to_string (f);
str.erase ( str.find_last_not_of('0') + 1, std::string::npos );
str.erase ( str.find_last_not_of('.') + 1, std::string::npos );

关于C++11 std::to_string(double) - 没有尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686482/

相关文章:

c++ - count_until 和 accumulate_until 的实现?

c++ - 有没有办法为 std::array 创建函数模板特化

c++ - UEFI 编译代码中的 STL 容器类

c++ - `constexpr` `std::array` 的二元运算

c++ - 异步函数调用 C++0x

c++ - 为 Mac 生成机器特定的 key

c++ - 在 C++ 库中有错误代码选项以提高性能

c++ - 将 ffmpeg 管道重定向到子进程

c++ - C++ 中的动态数组大小

c++ - 如何从 STL 的 const_iterator 中获取数据?