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.pswp.cn/news/259432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259432.shtml
英文地址,請注明出處:http://en.pswp.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…