に変換する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
簡単な方法はありますか?