C++ stringstream介绍,使用方法与例子

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
  istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
   istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和 stringstreambase派生而来, stringstream则是从iostream类和stringstreambase派生而来。
  他们的继承关系如下图所示:
这里写图片描述
 istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);

#include <iostream>
#include <string>
#include <sstream>
using namespace std; 
int main()   
{ istringstream istr; istr.str("1 56.7"); //上述两个过程可以简单写成 istringstream istr("1 56.7"); cout << istr.str()<<endl; int a; float b; istr>>a; cout<<a<<endl; istr>>b; cout<<b<<endl; system("pause"); 
}

 上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入”赋值”操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。
  str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<

#include <iostream>
#include <string>
#include <sstream>
using namespace std; 
int main()   
{ ostringstream ostr; ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长 ostr.put('d'); ostr.put('e'); ostr<<"fg"; string gstr = ostr.str(); cout<<gstr; }

 在上例代码中,我们通过put()或者左移操作符可以不断向ostr**插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值 得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加**,而是修改原有数据,超出的部分增长。
 所以上面输出: defg

   对于stringstream了来说,不用我多说,大家也已经知道它是用于C++风格的字符串的输入输出的。
stringstream的构造函数原形如下:
  stringstream::stringstream(string str);
  

#include <iostream>
#include <string>
#include <sstream>
using namespace std; int main()   
{ stringstream ostr("ccc"); ostr.put('d'); ostr.put('e'); ostr<<"fg"; string gstr = ostr.str(); cout<<gstr<<endl; char a; ostr>>a; cout<<a;system("pause"); 
}

 除此而外,stringstream类的对象我们还常用它进行string与各种内置类型数据之间的转换。
 

#include <iostream>
#include <string>
#include <sstream>
using namespace std; int main()   
{ stringstream sstr; //--------int转string----------- int a=100; string str; sstr<<a; sstr>>str; cout<<str<<endl; //--------string转char[]-------- sstr.clear();//如果你想通过使用同一stringstream对象实现多种类型的转换,请注意在每一次转换之后都必须调用clear()成员函数。 string name = "colinguan"; char cname[200]; sstr<<name; sstr>>cname; cout<<cname; system("pause"); 
}

最后一个太给力了,极大地方便了int与string,string与char*的转换。在string中,c_str()函数返回的是const char*,不是char*。
还可以使用ostringstream来完成以上转换,代码:

#include <sstream>
#include <iostream>
#include <string>using namespace std;
int main(void)
{int i=1011;string c;ostringstream oss;oss<<i;c=oss.str();cout<<c<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xp下添加linux启动,如何在windows xp系统下安装linux???

我刚刚想开始学linux&#xff0c;请教如何安装&#xff01;|我今天才安装了Redhat 9.0。LINUX不可能在WINDOWS下安装。比较简单的方法是先在XP下用PQMAGIC分好区boot ext3 100M , / ext3 6G , swap 内存1&#xff0d;2倍详细见www.linuxfans.org linux安装说明最后&#xf…

linux rar安装

描述&#xff1a;Linux默认自带ZIP压缩&#xff0c;最大支持4GB压缩&#xff0c;RAR的压缩比大于4GB. 流程&#xff1a;下载 》安装 》 使用 -------------------------------------------------- 下载 # wget http://www.rarsoft.com/rar/rarlinux-x64-5.2.1b1.tar.gz--16:01:…

hoj 2739 中国邮局问题

1 /*若原图的基图不连通,2 或者存在某个点的入度或出度为 0 则无解。3 统计所有点的入度出度之差 Di, 对于 Di > 0 的点,4 加边(s, i, Di, 0); 对于 Di < 0 的点加边(i, t, -Di,0);5 对原图中的每条边(i, j),6 在网络中加边(i, j, ∞, Dij),Dij 为边(i, j)的权值。7 求一…

R语言编程艺术(3)R语言编程基础

本文对应《R语言编程艺术》 第7章&#xff1a;R语言编程结构&#xff1b; 第9章&#xff1a;面向对象的编程&#xff1b; 第13章&#xff1a;调试 R语言编程结构 控制语句&#xff1a; 循环&#xff1a; for (n in x) { } while (condition) { } repeat { }另外break也可以用在…

用C++流成员函数put输出单个字符

转载&#xff1a;http://c.biancheng.net/cpp/biancheng/view/254.html 在程序中一般用cout和插入运算符“<<”实现输出&#xff0c;cout流在内存中有相应的缓冲区。有时用户还有特殊的输出要求&#xff0c;例如只输出一个字符。ostream类除了提供上面介绍过的用于格式控…

linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作

db2 "alter tablespace GJDATA resize (FILE /backup/GJDATA32K45G)"db2 "alter tablespace GJIDX resize (FILE /backup/GJIDX32K45G)"容器路径 db2 list tablespace containers for8容器大小 db2pd -d uibsch -tablespaces降低容器空间 resize 增加容器…

CheckBox控件

前台代码&#xff1a; 1 <asp:CheckBox ID"CheckBox1" runat"server" Text "苹果"/> 2 <asp:CheckBox ID"CheckBox2" runat"server" Text "柠檬"/> 3 <asp:CheckBox ID"CheckBox3" runa…

.NET垃圾回收笔记

名词 垃圾收集目标 ephemeral GC发生在Gen 0 和Gen 1 的垃圾收集 Full GC发生Gen 2 及以上的Gen与LOH的垃圾收集 垃圾收集模式 工作站模式GC直接发生在内存分配的线程&#xff08;也是当前的工作托管线程&#xff09;上 服务器模式每个CPU核都有一个自己独立的GC线程与托管堆 垃…

go.js中的图标(icons)的使用

2019独角兽企业重金招聘Python工程师标准>>> 1、图标库下载&#xff1a; 将icons引入&#xff1a;http://gojs.net/latest/samples/icons.js 2、样式演示 地址&#xff1a;http://gojs.net/latest/samples/icons.html 转载于:https://my.oschina.net/u/2391658/blog…

Pygame - Python游戏编程入门(1)

前言 在上一篇中&#xff0c;我们初步熟悉了pygame的控制流程&#xff0c;但这对于一个游戏而言是远远不够的。所以在这一篇中&#xff0c;我们的任务是添加一架飞机&#xff08;玩家&#xff09;&#xff0c;并且能够控制它进行移动&#xff0c;这样我们就又离目标进了一步了~…

C++字符输入getchar()和字符输出putchar()

转载&#xff1a;http://c.biancheng.net/cpp/biancheng/view/117.html C还保留了C语言中用于输入和输出单个字符的函数&#xff0c;使用很方便。其中最常用的有getchar函数和putchar函数。 putchar函数(字符输出函数) putchar函数的作用是向终端输出一个字符。例如&#xf…

linux实现shell,linux

4.5Mhttp://www.starbase-929.net/media/Calibre%20Library/Ken%20O.%20Bartch/Linux%20Shell%20Scription%20With%20Bash%20(1778)/Linux%20Shell%20Scription%20With%20Bash%20-%20Ken%20O.%20Bartch.pdfstarbase-929.net全网免费4.0Mhttp://www.myaitcampus.net/elibrary/im…

AQS浅析

2019独角兽企业重金招聘Python工程师标准>>> AQS的原理浅析 本文是《Java特种兵》的样章&#xff0c;本书即将由工业出版社出版 AQS的全称为&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff0c;这个类也是在java.util.concurrent.locks下面。这个类似乎…

str045漏洞提权linux,Linux运维知识之CVE-2016-5195 Dirtycow: Linux内核提权漏洞

本文主要向大家介Linux运维知识之CVE-2016-5195 Dirtycow&#xff1a; Linux内核提权漏洞绍了&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习Linux运维知识有所帮助。CVE-2016-5195 Dirtycow&#xff1a; Linux内核提权漏洞以下都是github上找的源码&#xf…

编程如写作

昨晚似乎是个适合写作的夜&#xff0c;不论是自己还是朋友&#xff0c;都比平常更容易被触动。看着微博上朋友们的心路&#xff0c;想写点什么却似乎找不出非常值得大书特书的主题&#xff0c;只是歪坐在电脑旁&#xff0c;喝着咖啡&#xff0c;单曲循环着仓木麻衣的《time aft…

C++中cin、cin.get()、cin.getline()、getline()等函数的用法

转载&#xff1a;http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html c输入流函数主要以下几个&#xff1a; 1、cin 2、cin.get() 3、cin.getline() 4、getline() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1、cin>>…

工作环境总结(1)开发环境搭建

1、安装git 安装文件&#xff1a;Git-2.12.0-64-bit.exe 下载地址&#xff1a;https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/Git-2.12.0-64-bit.exe 在git bash中配置&#xff0c;git bash命令行中执行&#xff08;只有使用到egit时使用&…

c语言烟花百度云,C语言实现放烟花的程序

这是一个利用C语言编写放烟花的程序(同时也可以播放音乐)&#xff0c;供大家参考&#xff0c;具体内容如下代码如下#pragma once#include#include //图形界面库头文件#include //计算圆形的轨迹坐标#include#include#include#include#pragma comment(lib,"winmm.lib"…

决定人生的七条公式

1 .积跬步以致千里&#xff0c;积怠惰以致深渊 1.01^365 37.80.99^365 0.032.拖延症 U EV/ID U完成任务的程度 E对成功的信心 V 对任务的愉悦度 I 你的分心程度 D你多久会获得回报3.三天打鱼两天晒网&#xff0c;终将一无所获 1.01^3 x 0.99^2 < 1.01 4.爱因斯坦的成…

strncpy与strcpy的区别与注意事项

strncpy 是 C语言的库函数之一&#xff0c;来自 C语言标准库&#xff0c;定义于 string.h&#xff0c;char *strncpy(char *dest, char *src, int n)&#xff0c;把src所指字符串的前n个字节复制到dest所指的数组中&#xff0c;并返回指向dest的指针。 strcpy只是复制字符串&am…