我想写我自己的,它在转换lexical_cast
为时保留小数点。所以我正在使用并设置标志:double
std::string
ostringstream
std::ios::showpoint
#include <string>
#include <iostream>
#include <boost/lexical_cast.hpp>
template <typename Source>
std::string my_string_cast(Source arg){
std::ostringstream interpreter;
interpreter.precision(std::numeric_limits<Source>::digits10);
interpreter.setf(std::ios::showpoint);
interpreter << arg;
return interpreter.str();
}
int main(int argc, char** argv) {
std::cout << my_string_cast(1.0) << std::endl;
std::cout << my_string_cast(5.6) << std::endl;
std::cout << my_string_cast(1.0/3.0) << std::endl;
return 0;
}
但是,这会打印不必要的 0 数字,这是我期望设置std::ios::fixed
但不是的行为std::ios::showpoint
:
1.00000000000000
5.60000000000000
0.333333333333333
没有设置std::ios::showpoint
它给出
1
5.6
0.333333333333333
但我想要这样的东西:
1.0
5.6
0.333333333333333
有什么简单的方法吗?