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类可以很方便的实现类型之间的安全转换
|