stringstream类简介
Name:qianghaoaho
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
/// stringstream类简介:
/// <sstream>类库定义了三种类:istringstream,
/// ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出
/// 操作.在此演示stringstream的使用.**stringstream最大的特点是可以很方便
/// 的实现各种数据类型的转换,不需要像C语言中转换那么麻烦,而且转换非常安全.
/// stringstream经常用于方便安全的类型转换.以下是使用示例:
/1.int和string类型互相转换
#if 1
int main()
{
//********int转换成string**********
int n = 300;
string result;
stringstream oss; //创建一个流
oss<<n; //将n的值传入oss流
oss>>result; //将oss流中的数据写入result变量
//也可以这么写:result = oss.str();
cout << "int(300)--to-->string(300):" << result << endl; //打印转换结果
//********string转换成int**********
int m;
string int_number = "12345";
stringstream oss1; //创建一个流
oss1<<int_number; //将int_number的值传入oss流
oss1>>m; //将oss流中的数据写入m变量
cout << "string(12345)--to-->int(12345):" << m << endl; //打印转换结果
return 0;
}
#endif
/2.float和string类型互相转换
#if 0
int main()
{
//********float转换成string**********
float n = 300.8;
string result;
stringstream oss; //创建一个流
oss<<n; //将n的值传入oss流
oss>>result; //将oss流中的数据写入result变量
//也可以这么写:result = oss.str();表示将流中的数据转换成string类型
cout << "float(300.8)--to-->string(300.8):" << result << endl; //打印转换结果
//********string转换成float**********
float m;
string float_number = "12345.7";
stringstream oss1; //创建一个流
oss1<<float_number; //将int_number的值传入oss流
oss1>>m; //将oss流中的数据写入m变量
cout << "string(12345.7)--to-->float(12345.7):" << m << endl; //打印转换结果
return 0;
}
#endif
/3.int和float类型互相转换
#if 0
int main()
{
//********int转换成float**********
int n = 300;
float result;
stringstream oss; //创建一个流
oss<<n; //将n的值传入oss流
oss>>result; //将oss流中的数据写入result变量
//也可以这么写:result = oss.str();表示将流中的数据转换成string类型
cout << "int(300)--to-->float(300):" << result << endl; //打印转换结果
//********float转换成int**********
int m;
float float_num = 12345.789;
stringstream oss1; //创建一个流
oss1<<float_num; //将int_number的值传入oss流
oss1>>m; //将oss流中的数据写入m变量
cout << "float(12345.789)--to-->int(12345):" << m << endl; //打印转换结果
return 0;
}
#endif
///4.用模板函数ToString(...)实现任意类型到string的转换///
#if 0
//
/// 至于其他类型的互相转换就不一一列举了,其他的都是同样
/// 的道理.接下来写个模板实现各种类型的数值到string类型的转
/// 换.
//
//用模板将各种数值转化成string类型
template<class T>
void ToString(string &result, const T &t)
{
stringstream oss; //创建一个流
oss<<t; //将t的值传入oss流
result = oss.str(); //获取转化后的字符串并写入result
//也可以写成oss>>result;
}
int main()
{
int int_num = 100;
float float_num = 99.876;
double double_num = 87.89;
string int_str;
string float_str;
string double_str;
ToString(int_str, int_num); //整数类型转换成string类型
ToString(float_str, float_num); //浮点数类型转换成string类型
ToString(double_str, double_num); //双精度类型转换成string类型
//打印结果
cout << int_str << endl;
cout << float_str << endl;
cout << double_str << endl;
return 0;
}
#endif
//------>可以看出stringstream类可以很方便的实现类型之间的安全转换