我需要将双精度值存储为字符串。我知道如果我想要显示它,我可以使用printf
,但我只想将它存储在一个字符串变量中,以便以后可以将它存储在一个映射中(作为值,而不是键)。
发布于 2008-12-01 20:39:49
// 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);
发布于 2011-11-05 03:09:28
发布于 2008-12-01 20:41:02
如果您使用C++,请避免使用sprintf
。它是非C++y的,有几个问题。Stringstreams是可选的方法,最好像Boost.LexicalCast中那样封装,这很容易做到:
template <typename T>
std::string to_string(T const& value) {
stringstream sstr;
sstr << value;
return sstr.str();
}
用法:
string s = to_string(42.5);
https://stackoverflow.com/questions/332111
复制相似问题