分享

stringstream类简介

 CodeNutter 2016-05-17

                                     stringstream类简介

                                                                                    Name:qianghaoaho

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


  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多