浅谈sstream头文件

来源:互联网 发布:网络嗅探器5.5 编辑:程序博客网 时间:2024/06/03 15:31

        在使用istreamstring,ostreamstring,streamstring的时候要用到sstream这个头文件。

        在刚开始使用的时候很蒙,完全不会用,现在来谈一下这个很棒的头文件。

        sstream这是一个字符串流,经常用于格式转换,包含了istream,ostream这些个函数,从字面就可以看出,istream是输入,ostream是输出。

  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;

  5. int main()
  6. {
  7.     int a, b;
  8.     string Str1, Str2;
  9.     string Input = "abc 123 bcd 456 sss 999";
  10.    
  11.     //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型
  12.     //ostringstream 只支持 << 操作符
  13.     //格式化输出
  14.     ostringstream oss;
  15.     oss << 3.14;
  16.     oss << "  ";
  17.     oss << 55555555;
  18.     oss << endl;
  19.     cout  << oss.str();
  20.    
  21.     //double型转化为字符串
  22.     oss.str("");//每次使用前清空,oss.clear() 并不能清空内存
  23.     oss << 3.1234234234;
  24.     Str2 = oss.str();
  25.     cout << Str2 << endl;

  26.     //int型转化为字符串
  27.     oss.str("");
  28.     oss << 1234567;
  29.     Str2 = oss.str();
  30.     cout << Str2 << endl;

  31.    
  32.     //istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来
  33.     //istringstream 只支持 >> 操作符

  34.     istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象
  35.     //若传入的字符串是常量,也可以进行如下赋值
  36.     //iss.str("ccc 555 aaa 333");
  37.     //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值
  38.     //iss.str(Input.c_str());
  39.     while(iss >> Str1 >> a)
  40.     {
  41.         cout << Str1 << "  " << a << endl;
  42.     }

  43.     //stringstream类
  44.     //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换
  45.     stringstream ss;
  46.     ss << Input;
  47.     while(ss >> Str1 >> a)
  48.     {
  49.         cout << Str1 << " " << a << endl;
  50.     }

  51.     //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里
  52.     //输入方式:
  53.     //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)
  54.     //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;
  55.     //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址
  56.     //  eg. iss.str(Input.c_str()), iss.str("abc 123 345")
  57.     //      oss.str(Input.c_str()), oss.str("abc 123 345")
  58.     //      ss.str(Input.c_str()), ss.str("abc 123 345")

  59.     //输出方式:
  60.     //1. 通过.str()得到一份拷贝
  61.     //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();
  62.     // 显然,这个也提供C语言的接口
  63.     //  printf("%s", iss.str().c_str()),  printf("%s", oss.str().c_str()),  printf("%s", ss.str().c_str())
  64.     //2. >>操作符, iss和ss支持该操作
  65.    
  66.     //每次不同的使用时刻必须要清空
  67.     //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法
  68.    
  69.     //最大的用处
  70.     //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见
  71.     //提供字符串和各种类型之间的转换
  72.     return 0;
  73. }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 修公路占地补偿盖房子房产证怎么办 哺乳期乳房有硬块挤不出来怎么办 老公投的公司倒闭了钱怎么办 小丑鱼老在缸上边游不下去怎么办 海缸养珊瑚又想养蝴蝶鱼怎么办 被几个月的小狗咬了怎么办 木本植物继代长出大量愈伤怎么办 钱兜树叶子发黄掉叶怎么办 手机qq群200人满了怎么办 支票被背书人的章盖浅了怎么办 没病装病的心理病患者怎么办 20多岁被骗40多万怎么办 一个学生上课爱捣乱班级课堂怎么办 军训的时候大姨妈来了怎么办 笔记本连接无线网说链接限制怎么办 12306密码和邮箱都忘了怎么办 烦恼都是自找的新书散页了怎么办 白色衣服被红色衣服染了怎么办 手机微信里面不能拍手功怎么办 肇事逃逸轻伤且对方不私了怎么办 数学差怎么办脑子不好啊数学学不老 手机号丢失微信密码丢失怎么办找回 悦借钱输入五次密码被锁怎么办 生源地助学贷款密码忘了怎么办 生源地助学贷款登录密码忘了怎么办 助学贷款支付宝密码忘了怎么办 微信密码忘记了手机号也换了怎么办 换手机号了微信密码忘记了怎么办 qq密码忘记了手机号也换了怎么办 一年只能修改一次昵称我能怎么办 华为手机的账号和密码丢失怎么办 华为手机的账号和密码丢失了怎么办 手机号被别人注册了微博怎么办 微博账号一天内多次解冻怎么办 露娜注册时邮箱填错了怎么办 苹果4s手机显示已停用怎么办 新买的微博小号太多内容了怎么办 向海关申报价格低于实际价格怎么办 百度云下载内容包含违规信息怎么办 跨境汇款错了不能退款怎么办 公司欠钱没有还被起诉了。怎么办