C++中stringstream的使用方法和样例

摘要:
istringstream之前用于转换leetcode中的字符串和int。现在让我们总结一下用法和测试用例。istringstream类用于执行C++风格的流式输入操作。下图详细描述了几个类别之间的继承关系:istringstream由字符串对象构建,字符从字符串对象读取。Ostringstream也由字符串对象构造,以将字符插入字符串对象。Stringstream用于C++样式字符串的输入和输出。类似地,stringstream可以用于字符串和不同类型的转换。

  之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。  

  介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。

istringstream类用于执行C++风格的串流的输入操作。

ostringstream类用于执行C风格的串流的输出操作。 

stringstream类同时可以支持C风格的串流的输入输出操作。

下图详细描述了几种类之间的继承关系:

C++中stringstream的使用方法和样例第1张

istringstream是由一个string对象构造而来,从一个string对象读取字符。 
ostringstream同样是有一个string对象构造而来,向一个string对象插入字符。
stringstream则是用于C++风格的字符串的输入输出的。 

代码测试:
  1. #include<iostream>
  2. #include <sstream>
  3. using namespace std;<pre name="code" class="cpp">int main(){
  4. string test = "-123 9.87 welcome to, 989, test!";
  5. istringstream iss;//istringstream提供读 string 的功能
  6. iss.str(test);//将 string 类型的 test 复制给 iss,返回 void
  7. string s;
  8. cout << "按照空格读取字符串:" << endl;
  9. while (iss >> s){
  10. cout << s << endl;//按空格读取string
  11. }
  12. cout << "*********************" << endl;
  13. istringstream strm(test);
  14. //创建存储 test 的副本的 stringstream 对象
  15. int i;
  16. float f;
  17. char c;
  18. char buff[1024];
  19. strm >> i;
  20. cout <<"读取int类型:"<< i << endl;
  21. strm >> f;
  22. cout <<"读取float类型:"<<f << endl;
  23. strm >> c;
  24. cout <<"读取char类型:"<< c << endl;
  25. strm >> buff;
  26. cout <<"读取buffer类型:"<< buff << endl;
  27. strm.ignore(100, ',');
  28. int j;
  29. strm >> j;
  30. cout <<"忽略‘,’读取int类型:"<< j << endl;
  31. system("pause");
  32. return 0;
  33. }
输出:
C++中stringstream的使用方法和样例第2张
C++中stringstream的使用方法和样例第3张
总结:
1)在istringstream类中,构造字符串流时,空格会成为字符串参数的内部分界;
2)istringstream类可以用作string与各种类型的转换途径
3)ignore函数参数:需要读取字符串的最大长度,需要忽略的字符
代码测试:
  1. int main(){
  2. ostringstream out;
  3. out.put('t');//插入字符
  4. out.put('e');
  5. out << "st";
  6. string res = out.str();//提取字符串;
  7. cout << res << endl;
  8. system("pause");
  9. return 0;
  10. }
输出:test字符串;
注:如果一开始初始化ostringstream,例如ostringstream out("test"),那么之后put或者<<时的字符串会覆盖原来的字符,超过的部分在原始基础上增加。

stringstream同理,三类都可以用来字符串和不同类型转换。


免责声明:文章转载自《C++中stringstream的使用方法和样例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用tensorboard可视化模型编码 编码的转化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

selenium 难定位元素,时间插件,下拉框定位,string

1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: findElement(By.xpath(“”)); 通过元素的标签名称定位元素: findElement(By.tagName(“”)); 通过元素的链接名称...

springboot制作自定义starter

自定义starterSpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进 starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启 动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。 SpringBoot会自动通过...

asp中将文本框内的日期转换成datetime类型的数据

将字符类型的日期转化为DateTime类型主要有以下方法: 方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方法二:Convert.ToDateTime(string, IFormatProvider) DateTimedt; DateTimeFormatInfo...

.NET Core+QQ第三方授权登录

安装包 dotnet add package AspNet.Security.OAuth.QQ 接上文GitHub第三方授权登录 申请过程不介绍了,申请者资料,个人也是可以申请成功的。 这时候有二个参数就是clientid clientsecret APP ID:xxxx APP Key:xxxxxx 其中平台信息,这个申请审核通过后,不要修改,千万不...

Android二维码功能实现

最近二维码真是越来越火了,随便电视上、网络上、商场里,到处都是二维码。而内嵌二维码扫描功能的软件也越来越多,QQ、微信、UC浏览器等等应用都可以对着二维码扫一扫,感觉我们自己的应用里不加上二维码扫描功能,都跟不上时代潮流了。所以今天我就将带着大家一起,在我们自己的程序里加入二维码扫描的功能。 不过,二维码功能如果真要做起来还是非常复杂的,从零开始实现不太现...

vscode利用dev配置c语言,VSCode搭建C++/C调试编译环境(使用DevC++)

关于VSCode使用Dev C++的MinGW64来调试C++/C网上的教程试了很多,大部分都已经过时了或者说是不适配了,最后就选择使用Dev原有的东西来实现,不建议自己下载MinGW64,里面安装的时候有些选项不知道选什么的话很容易出现问题。 配置Dev下MinGW64的路径 假设Dev已经安装好了,然后现在要做的就是将Dev目录下的MinGW添加到环境...