C++ 在stringstream中写入浮点值并保留“0”&引用;即使没有小数点

C++ 在stringstream中写入浮点值并保留“0”&引用;即使没有小数点,c++,stringstream,C++,Stringstream,我想将字符串中的双元素转换为给定的精度。我希望避免字符串中出现不必要的0(因此我无法使用)。另外,我想在我的字符串中始终保留“.” 因此,我编写了以下函数: std::string toString(double element, int precision) { std::stringstream stream; stream << std::setprecision(precision) << element; return stream.str(

我想将字符串中的
双元素
转换为给定的
精度
。我希望避免字符串中出现不必要的
0
(因此我无法使用)。另外,我想在我的字符串中始终保留“.”

因此,我编写了以下函数:

std::string toString(double element, int precision)
{
   std::stringstream stream;

   stream << std::setprecision(precision) << element;
   return stream.str();
}

toString(1.25, 2)  --> "1.25" OK
toString(1.25, 17) --> "1.25" OK
std::字符串到字符串(双元素,整数精度)
{
std::stringstream;
流“1.25”正常
但是现在,假设我做了
toString(1,2)
,然后它返回给我
“1”
,但我想保留“
”,所以我想要
“1”。

你有一个有效的方法来做到这一点吗

附言:我不懂C++11


感谢您阅读我的问题。

要获得尾随“.”在所有情况下,如果不同时获得尾随零,您需要自己完成。但是,在
std::string
中添加“.”非常简单(如果您只想处理流,则更难)

如果您需要支持任何特定于语言环境的问题(例如,“.”和“,”的不同用法),请注意这些问题

std::stringstream ss;
ss << std::setprecision(precision) << element;
std::string str = stream.str();
if (str.find('.') == std::string::npos)
    str.push_back('.');
return str;
std::stringstream-ss;

ss在字符串中搜索
,如果没有,请将其附加到我看到的endOk中,谢谢你的回复。最后我想出了类似的方法,并希望它能及时生效