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类可以很⽅便的实现类型之间的安全转换
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论