前些天才发现c++中的stringstream这个比sprintf方便得多的功能。
话不多说,上代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
template<class T>
string ToString(T t)
{
stringstream sstm;
string str;
sstm<<t;
sstm>>str;
return str;
}
template<class T1,class T2>
T1 ConvertTo(T2 t)
{
stringstream sstm;
T1 res;
sstm<<t;
sstm>>res;
return res;
}
int main()
{
int i=200;
cout<<ConvertTo<string>(110)+"hehe"<<endl;
cout<<"The Score is:"+ConvertTo<string>(i)<<endl;
system("pause");
return 0;
}
可以看到,通过编写简单的模板函数,stringstream能够方便的实现各种数据类型的转换,并且支持各种类型的常用操作。
与使用char和sprintf相比,这种用法在安全性上面和灵活性上的优势显而易见,不再要担心字符串越界问题,相关的字符操作也要方便的多。