头文件引用:
<sstream>
<sstream>库定义了三种类:
istringstream:处理流的输入
ostringstream:处理流的输出
stringstream:处理流的输入输出
简单起见,这里主要以stringstream为中心进行简单描述:
例1:string转int
stringstream stream;
string s = "100";
int i = 0;
stream << s;
stream >> i;// 结果i等于100
例2:int转string
stringstream stream;
string s = "";
int i = 100;
stream << i;
s = stream.str();// 结果s等于"100"
针对如上示例,可以写一简单的通用转换函数。
函数1:任意数据类型转换为string类型
template<class T>
void to_string(string& out, constT& in)
{
stringstream stream;
stream << in;
out = stream.str();
}
或
template<class T>
string to_string(constT& in)
{
stringstream stream;
stream << in;
string out;
out = stream.str();
return out;
}
函数2:string转换为任意数据类型
template<class T>
void string_to(string& in, constT& out)
{
stringstream stream;
stream << in;
stream >> out;
}
或
template<class T>
T string_to(string& in)
{
stringstream stream;
stream << in;
T out;
stream >> out;
return out;
}
函数3:任意数据类型转换为string类型
template<class out_type,class in_value>
out_type format(const in_value& in)
{
stringstream stream;
stream << in;
out_type out;
stream >> out;
return out;
}