istringstream, ostringstream, stringstream用法示例zz

http://hi.baidu.com/%C0%BC%D7%CF%F6%AA/blog/item/5e8f58320a72d5f21b4cff55.html

Code:
  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.   
  6.   
  7. int main()  
  8. {  
  9.     int a, b;  
  10.     string Str1, Str2;  
  11.     string Input = "abc 123 bcd 456 sss 999";  
  12.      
  13.     //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型  
  14.     //ostringstream 只支持 << 操作符  
  15.     //格式化输出  
  16.     ostringstream oss;  
  17.     oss << 3.14;  
  18.     oss << " ";  
  19.     oss << 55555555;  
  20.     oss << endl;  
  21.     cout << oss.str();  
  22.      
  23.     //double型转化为字符串  
  24.     oss.str("");//每次使用前清空,oss.clear() 并不能清空内存  
  25.     oss << 3.1234234234;  
  26.     Str2 = oss.str();  
  27.     cout << Str2 << endl;  
  28.   
  29.   
  30.     //int型转化为字符串  
  31.     oss.str("");  
  32.     oss << 1234567;  
  33.     Str2 = oss.str();  
  34.     cout << Str2 << endl;  
  35.   
  36.   
  37.      
  38.     //istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来  
  39.     //istringstream 只支持 >> 操作符  
  40.   
  41.   
  42.     istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象  
  43.     //若传入的字符串是常量,也可以进行如下赋值  
  44.     //iss.str("ccc 555 aaa 333");  
  45.     //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值  
  46.     //iss.str(Input.c_str());  
  47.     while(iss >> Str1 >> a)  
  48.     {  
  49.         cout << Str1 << " " << a << endl;  
  50.     }  
  51.   
  52.   
  53.     //stringstream类  
  54.     //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换  
  55.     stringstream ss;  
  56.     ss << Input;  
  57.     while(ss >> Str1 >> a)  
  58.     {  
  59.         cout << Str1 << " " << a << endl;  
  60.     }  
  61.   
  62.   
  63.     //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里  
  64.     //输入方式:  
  65.     //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)  
  66.     //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;  
  67.     //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址  
  68.     // eg. iss.str(Input.c_str()), iss.str("abc 123 345")  
  69.     //      oss.str(Input.c_str()), oss.str("abc 123 345")  
  70.     //      ss.str(Input.c_str()), ss.str("abc 123 345")  
  71.   
  72.   
  73.     //输出方式:  
  74.     //1. 通过.str()得到一份拷贝  
  75.     //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();  
  76.     // 显然,这个也提供C语言的接口  
  77.     // printf("%s", iss.str().c_str()), printf("%s", oss.str().c_str()), printf("%s", ss.str().c_str())  
  78.     //2. >>操作符, iss和ss支持该操作  
  79.      
  80.     //每次不同的使用时刻必须要清空  
  81.     //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法  
  82.      
  83.     //最大的用处  
  84.     //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见  
  85.     //提供字符串和各种类型之间的转换  
  86.     return 0;  
  87. }  

以下是自己写的练习程序

Code:
  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.   
  6. int main()  
  7. {  
  8. //istringstream用法  
  9. istringstream iss;  
  10. string istr1,istr2,istr3;  
  11. int a;  
  12.   
  13. //输入字符串  
  14. iss.str("I love Ziyu");  
  15. iss>>istr1>>istr2>>istr3;  
  16. cout<<istr1<<" "<<istr2<<" "<<istr3<<endl;  
  17.   
  18. // 字符串转换为int  
  19. iss.clear();  
  20. iss.str("1534");  
  21. iss>>a;  
  22. cout<<a<<endl;  
  23. //用C测试转换  
  24. printf("%d/n",a);  
  25.   
  26.   
  27. //ostringstream用法  
  28. ostringstream oss;  
  29. string ostr1,ostr2,ostr3;  
  30. string ostr;  
  31. string strFromInt;  
  32. string strFromDouble;  
  33.   
  34. //输出字符串  
  35. ostr1="My ";  
  36. ostr2="Name's ";  
  37. ostr3="Steve";  
  38. oss<<ostr1;  
  39. oss<<ostr2;  
  40. oss<<ostr3;  
  41. cout<<oss.str()<<endl;  
  42. ostr=oss.str();  
  43. cout<<ostr<<endl;  
  44. //int 转化为string  
  45. oss.str("");  
  46. oss<<23412;  
  47. strFromInt=oss.str();  
  48.     cout<<strFromInt<<endl;  
  49. //double 转化为string  
  50. oss.str("");  
  51. oss<<1.2345;  
  52. strFromDouble=oss.str();  
  53. cout<<strFromDouble<<endl;  
  54.   
  55. //将string型赋给char型。关键:c_str函数的返回值是const char*的,不能直接赋值给char*,必须赋给const char*  
  56. const char *I=strFromInt.c_str();  
  57. const char *D=strFromDouble.c_str();  
  58. printf("%s,%s/n",I,D);  
  59. return 0;  
  60. }   

文章出处:DIY部落(http://www.diybl.com/course/3_program/c++/cppxl/20090922/176264.html)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值