Boost 提供了lexical_cast, 可以方便地在string和int, double, float, long之间相互转化。再也不用sprintf或者atoi了
用法
string s = lexical_cast<string>(123.12);
看Boost的实现,其实是用了stringstream。 如果写的简单点,什么异常都不考虑,可以实现如下
template <class Source>
Target lexical_cast(const Source& n)
{
Target result;
stringstream ss;
ss<<n;
ss>>result;
return result;
}