stringstream类简介
stringstream类简介
Name:qianghaoaho
[html] view plain copy print?
1. #include <iostream>
2. #include <cstring>
3. #include <sstream>
4. using namespace std;
5.
6. ////////////////////////////////////////////////////////////////////////////
7. ///                  stringstream类简介:
8. ///      <sstream>类库定义了三种类:istringstream,
9. ///  ostringstream,stringstream.分别⽤来进⾏流的输⼊,流的输出,输⼊输出
10. ///  操作.在此演⽰stringstream的使⽤.**stringstream最⼤的特点是可以很⽅便
11. ///  的实现各种数据类型的转换,不需要像C语⾔中转换那么⿇烦,⽽且转换⾮常安全.
12. ///  stringstream经常⽤于⽅便安全的类型转换.以下是使⽤⽰例:
13. ////////////////////////////////////////////////////////////////////////////
14.
15. /////////////////1.int和string类型互相转换////////////
16. #if 1
17. int main()
18. {
19.
20.    //********int转换成string**********
21.    int n = 300;
22.    string result;
23.    stringstream oss;  //创建⼀个流
24.    oss<<n;  //将n的值传⼊oss流
25.    oss>>result;  //将oss流中的数据写⼊result变量
26.    //也可以这么写:result = oss.str();
27.    cout << "int(300)--to-->string(300):" << result << endl;  //打印转换结果
28.
29.    //********string转换成int**********
30.    int m;
31.    string int_number = "12345";
32.    stringstream oss1;  //创建⼀个流
33.    oss1<<int_number;  //将int_number的值传⼊oss流
34.    oss1>>m;  //将oss流中的数据写⼊m变量
35.    cout << "string(12345)--to-->int(12345):" << m << endl;  //打印转换结果
36.    return 0;
37. }
38. #endif
39.
40. /////////////////2.float和string类型互相转换////////////
41. #if 0
42. int main()
43. {
44.
45.    //********float转换成string**********
46.    float n = 300.8;
47.    string result;
48.    stringstream oss;  //创建⼀个流
49.    oss<<n;  //将n的值传⼊oss流
50.    oss>>result;  //将oss流中的数据写⼊result变量
51.    //也可以这么写:result = oss.str();表⽰将流中的数据转换成string类型
52.    cout << "float(300.8)--to-->string(300.8):" << result << endl;  //打印转换结果
53.
54.    //********string转换成float**********
55.    float m;
56.    string float_number = "12345.7";
57.    stringstream oss1;  //创建⼀个流
58.    oss1<<float_number;  //将int_number的值传⼊oss流
59.    oss1>>m;  //将oss流中的数据写⼊m变量
60.    cout << "string(12345.7)--to-->float(12345.7):" << m << endl;  //打印转换结果
61.    return 0;
62. }
63. #endif
64.
65. /////////////////3.int和float类型互相转换////////////
66. #if 0
67. int main()
68. {
69.
70.    //********int转换成float**********
71.    int n = 300;
72.    float result;
73.    stringstream oss;  //创建⼀个流
74.    oss<<n;  //将n的值传⼊oss流
75.    oss>>result;  //将oss流中的数据写⼊result变量
76.    //也可以这么写:result = oss.str();表⽰将流中的数据转换成string类型
77.    cout << "int(300)--to-->float(300):" << result << endl;  //打印转换结果
78.
79.    //********float转换成int**********
80.    int m;
81.    float float_num = 12345.789;
82.    stringstream oss1;  //创建⼀个流
83.    oss1<<float_num;  //将int_number的值传⼊oss流
84.    oss1>>m;  //将oss流中的数据写⼊m变量
85.    cout << "float(12345.789)--to-->int(12345):" << m << endl;  //打印转换结果
86.    return 0;
87. }
88. #endif
89.
90. ///////////4.⽤模板函数ToString(...)实现任意类型到string的转换///////////cstring转为int
91. #if 0
92. //////////////////////////////////////////////////////////////////
93. ///      ⾄于其他类型的互相转换就不⼀⼀列举了,其他的都是同样
94. ///    的道理.接下来写个模板实现各种类型的数值到string类型的转
95. ///    换.
96. //////////////////////////////////////////////////////////////////
97.
98. //⽤模板将各种数值转化成string类型
99.    template<class T>
100. void ToString(string &result, const T &t)
101. {
102.    stringstream oss;  //创建⼀个流
103.    oss<<t;  //将t的值传⼊oss流
104.    result = oss.str();  //获取转化后的字符串并写⼊result
105.    //也可以写成oss>>result;
106. }
107.
108. int main()
109. {
110.    int    int_num    = 100;
111.    float  float_num  = 99.876;
112.    double  double_num = 87.89;
113.    string int_str;
114.    string float_str;
115.    string double_str;
116.
117.    ToString(int_str, int_num);        //整数类型转换成string类型
118.    ToString(float_str, float_num);    //浮点数类型转换成string类型119.    ToString(double_str, double_num);  //双精度类型转换成string类型120.
121.    //打印结果
122.    cout << int_str << endl;
123.    cout << float_str << endl;
124.    cout << double_str << endl;
125.    return 0;
126. }
127. #endif
128.
129. //------>可以看出stringstream类可以很⽅便的实现类型之间的安全转换