问题:我有一个整数;这个整数需要转换为stl :: string类型。
在过去,我使用stringstream
进行转换,这只是一种麻烦。我知道C方式是做一个sprintf
,但我宁愿做一个类型安全的(C)方法。
有更好的方法吗?
以下是我过去使用的字符串流方法:
std::string intToString(int i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
当然,这可以改写为:
template<class T>
std::string t_to_string(T i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
但是,我认为这是一个相当“重量级”的实施。
Zan指出,调用非常好,但是:
std::string s = t_to_string(my_integer);
无论如何,一个更好的方式将是......很好。
相关:
答案 0 :(得分:133)
现在在c ++ 11中我们有
#include <string>
string s = std::to_string(123);
参考链接:http://en.cppreference.com/w/cpp/string/basic_string/to_string
答案 1 :(得分:28)
如前所述,我建议使用boost lexical_cast。它不仅具有相当好的语法:
#include <boost/lexical_cast.hpp>
std::string s = boost::lexical_cast<std::string>(i);
它还提供了一些安全性:
try{
std::string s = boost::lexical_cast<std::string>(i);
}catch(boost::bad_lexical_cast &){
...
}
答案 2 :(得分:22)
不是真的,在标准中。有些实现有一个非标准的itoa()函数,你可以查看Boost的lexical_cast,但是如果你坚持使用它,那么它几乎是stringstream和sprintf()之间的选择(snprintf(),如果你有的话)。