C++ sstream的使用

  • 基本操作
  • 实用函数
  • 参考链接

  sstream库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。[1]

基本操作

1、操作前后: 操作前将string压入sstream,操作后压出

stringstream stream;     //声明一个stringstream变量
string str;
...//具体操作
str = stream.str();     //从steam中提取刚插入的整型数 ,等效于stream >> str;

2、具体操作
a\可跳过空格

std::stringstream ss;
ss << 100 << ' ' << 200;
int foo,bar;
ss >> foo >> bar;
//rslt: foo==100,bar==200

b\尽量识别,不可识别时则为0

ss << 100 << ',' << 200;
int foo,bar;
ss >> foo >> bar;
//rslt: foo=100,bar=200

实用函数

1、myto_string()
 STL中的to_string()不能把cstring转string,而下面的函数可以

template<class T>
string myto_string(const T& t)
{ostringstream oss;//创建一个流oss<<t;//把值传递如流中return oss.str();//获取转换后的字符转并将其写入result
}

2、stringsteam的方法str()
 该方法使用后,输出流指针总是指向流的最前面
a、不恰当使用

  std::stringstream ss;
string str1("123456");
ss.str(str1);
ss<<"hello";
string str2;
ss>> str2;
cout<<str1<<endl;//123456
cout<<str2<<endl;//hello6

b、正确使用

 std::stringstream ss;
string str1("123456");
ss.str(str1);
ss.seekp(0,ios::end);
ss<<"hello";
cout<<ss.str()<<endl;//123456hello
cout<<str1<<endl;//123456

3、大多数类型可以用的转换[3]:

template<class out_type, class in_value>
out_type myconvert(const in_value & t)
{stringstream stream;stream<<t;//向流中传值out_type result;//这里存储转换结果stream>>result;//向result中写入值return result;
}string str1("123456");str1 = myconvert<string,int>(1234);

4、树的序列化和你序列化:
 由于代码比较长,就不复制,了请直接到链接 3 看。我想,这段代码没必要考虑效率,它的优点在于可视化。如果注重效率的话,就应该把数据存为二进制流了。

参考链接

[1] C++ stringstream的用法|c++ 字符串流 sstream(常用于格式转换)
[2]std::stringstream::stringstream
[3]c++ stringstream(老好用了)
[4]C++文件中的移动文件指针的函数怎么用

C++ sstream的使用相关推荐

  1. C++标准库中sstream和strstream的区别

    在C++有两种字符串流,一种在sstream中定义, 另一种在strstream中定义. 它们实现的东西基本一样. strstream里包含 class strstreambuf; class ist ...

  2. fstream,sstream,使用(习题8.16)

    2019独角兽企业重金招聘Python工程师标准>>> 读出cin中残存的回车换行符应使用:getline(cin,s); #include<iostream> #inc ...

  3. C++中sstream的简单使用

    读入一行,按空格分割: #include<iostream> #include<algorithm> #include<sstream> #include<s ...

  4. 18行代码AC_排序 HDU - 1106(sstream简单解法)

    励志用少的代码做高效表达. Problem describe 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应 ...

  5. 神奇的sstream头文件(整型与字符串自由转换)

    疫情当前,"串门就是互相残杀,聚会就是自寻短见",所以,让我们一起快乐的敲代码吧! 这次分享的知识是:如何让整型.实型.字符型自由转换. 直接上代码: //#include< ...

  6. sstream应用举例

    题目描述 把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法? 注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001 ...

  7. 【HDU - 2072 】单词数(字符串读入技巧,sstream大法,水题,字符串读入格式)

    题干: lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行 ...

  8. sstream和strstream以及fstream

    在C++有两种字符串流,也称为数组I/O流,一种在sstream中定义,另一种在strstream中定义. 它们实现的东西基本一样. strstream里包含 class strstreambuf; ...

  9. SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)...

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=2866&rd=5853 主要是要对字符串的操作要熟悉,熟 ...

  10. sstream类的详解

     sstream类的详解             sstream类详细介绍 C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象 ...

最新文章

  1. 【转】C语言的位运算的优势
  2. 前端技术分享:Nginx负载均衡视频,基础的实战应用
  3. knockout checkbox 全选
  4. Win7 连接局域网共享之后 提示错误代码:0x800704b3(实测可用)
  5. 利用matlab自带函数快速提取二值图像的图像边缘 bwperim函数
  6. 游戏筑基开发之文件操作(C语言)
  7. linux下安装inode客户端
  8. 反爬虫策略的应对方法汇总
  9. 驱动精灵等软件卸载后剩余文件的删除
  10. VB调用摄像头录像,拍照,保存
  11. HTML期末学生作业~html+css+javascript仿猫眼电影在线网站[毕业设计]
  12. Date DateFormat SimpleDateFormat Calendar Joda-Time
  13. 天翼云云硬盘的磁盘模式及共享盘
  14. 计算机存储容量用K还是KB,计算机中容量单位B、KB、MB、GB和TB的关系
  15. Android——新大陆云平台配置(2)
  16. 2022年淘宝618活动时间和天猫618有什么优惠活动
  17. Python 为什么不支持 switch 语句?
  18. 警惕 “格机软件” 格式化手机全字库..不要轻易给不明觉厉的软件给root权限
  19. CAD版本转换怎么转?
  20. kicad 排针_xconch: 神奇海螺,是时候该结束开发板裸奔的时代了。采用堆叠设计,拥有漂亮外观及超强扩展性。一款完全开源的结构及通用硬件扩展平台,旨在大家能更欢乐的DIY。...

热门文章

  1. Java多线程 模拟售票窗口售票
  2. 我最爱的经典电影对白
  3. 番茄小说发布2022原创年度报告,入驻作者人数上涨300%,65%为90后作者
  4. 给你的网站添加访问统计和事件统计
  5. 11 | Gossip协议:流言蜚语
  6. plt.scatter散点图添加图例总结
  7. dubbo之9种rpc协议
  8. 学速写的步骤来啦,零基础学习更简单
  9. 解决ubuntu无法连接wifi的问题: 安装无线网卡驱动
  10. 【第二部分 图像处理】第3章 Opencv图像处理进阶-【1 图像处理D-图像金字塔】(imgproc组件、feature2D组件)