Bil*_*ard 165 c++ string double
我需要将double存储为字符串.我知道我可以使用,printf
如果我想显示它,但我只是想将它存储在一个字符串变量中,以便我以后可以将它存储在地图中(作为值,而不是键).
Ada*_*eld 185
// The C way:
char buffer[32];
snprintf(buffer, sizeof(buffer), "%g", myDoubleVar);
// The C++03 way:
std::ostringstream sstream;
sstream << myDoubleVar;
std::string varAsString = sstream.str();
// The C++11 way:
std::string varAsString = std::to_string(myDoubleVar);
// The boost way:
std::string varAsString = boost::lexical_cast<std::string>(myDoubleVar);
Run Code Online (Sandbox Code Playgroud)
Joh*_*itb 179
该升压(TM)方式:
std::string str = boost::lexical_cast<std::string>(dbl);
Run Code Online (Sandbox Code Playgroud)
在标准C++方式:
std::ostringstream strs;
strs << dbl;
std::string str = strs.str();
Run Code Online (Sandbox Code Playgroud)
注意:别忘了#include <sstream>
ken*_*ytm 118
在标准C++ 11的方式(如果你不关心输出格式):
#include <string>
auto str = std::to_string(42.5);
Run Code Online (Sandbox Code Playgroud)
to_string
是N1803(r0),N1982(r1)和N2408(r2)" 简单数字访问 "中引入的新库函数.还有stod
执行反向操作的功能.
如果您确实希望使用不同的输出格式"%f"
,请使用其他答案中所示的snprintf
或ostringstream
方法.
Kon*_*lph 24
如果您使用C++,请避免使用sprintf
.这是un-C++ y并且有几个问题.Stringstreams是首选方法,最好封装在Boost.LexicalCast中,可以很容易地完成:
template <typename T>
std::string to_string(T const& value) {
stringstream sstr;
sstr << value;
return sstr.str();
}
Run Code Online (Sandbox Code Playgroud)
用法:
string s = to_string(42.5);
Run Code Online (Sandbox Code Playgroud)
Yoc*_*mer 23
您可以在C++ 11中使用std :: to_string
double d = 3.0;
std::string str = std::to_string(d);
Run Code Online (Sandbox Code Playgroud)
cop*_*pro 10
sprintf
没关系,但在C++中,更好,更安全,也更慢的转换方式是stringstream
:
#include <sstream>
#include <string>
// In some function:
double d = 453.23;
std::ostringstream os;
os << d;
std::string str = os.str();
Run Code Online (Sandbox Code Playgroud)
您还可以使用Boost.LexicalCast:
#include <boost/lexical_cast.hpp>
#include <string>
// In some function:
double d = 453.23;
std::string str = boost::lexical_cast<string>(d);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,str
都应该在"453.23"
之后.LexicalCast具有一些优势,可确保转换完成.它stringstream
在内部使用s.
Dan*_*nyK 10
我会看一下C++ String Toolkit Libary.刚刚在别处发布了类似的答案.我发现它非常快速可靠.
#include <strtk.hpp>
double pi = M_PI;
std::string pi_as_string = strtk::type_to_string<double>( pi );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
383308 次 |
最近记录: |