在c++有兩種字串流
,也稱為陣列
i/o流,一種在
strstream
中定義,另一種在
sstream
中定義。它們實現的東西基本一樣。
strstream裡包含:
class strstreambuf;
class istrstream;
class ostrstream;
class strstream;
它們是基於c型別字串
char*
編寫的sstream中包含:
class stringbuf;
class istringstream;
class ostringstream;
class stringstream;
它們是基於std::string編寫的
因此ostrstream::str()返回的是
char*
型別的字串
而ostringstream::str()返回的是
std::string
型別的字串
在使用的時候要注意到二者的區別,一般情況下推薦使用std::string型別的字串
當然如果為了保持和c的相容,使用
strstream
也是不錯的選擇。
但要記住一點,strstream雖仍然是
c++語言標準的一部分
,但已被
c++標準宣稱為「
deprecated
」,也就是不再提倡使用了,也說不定以後幹粹就沒了。
先介紹一下sstream
//strigstream流
以空格為邊界符
,使用其須包含
sstream
標頭檔案//istringstream 用法
istringstream istring;
string ss("ss 8346520");
istring.str(ss);
int i=0;
string s;
istring>>s>>i;
cout<
或者istringstream istring("ss 8346520");
int i=0;
string s;
istring>>s>>i;
cout<
都將列印:s內容是
ss,i
內容是8346520
的結果;
//ostringstream 用法
string s="test";
int i=8346520;
int j=0;
string s1;
ostringstream ostring; //
不能寫成ostringstream ostring<
ostring<
cout《流內儲存內容是
test 8346520
istringstream istring(ostring.str());
istring>>s1>>j;//要注意此處的順序
;cout<――――
"<
簡單說說strstream:
基於陣列的類有istrstream、
ostrstream
和strstream
。它們分別用來建立輸入、輸出和輸入/輸出流。這些類的基類之一是
strstreambuf
,它定義了派生類使用的幾個底層的具體屬性。
除了strstreambuf以外,
istream
也是istrstream
的基類。類
ostrstream
包括了類
ostream
。strstream也包括了類
iostream
。所以,所有基於陣列的類和「普通」i/
o類一樣訪問相同的成員函式。
建立基於陣列的輸出流要將乙個輸出流和乙個陣列關聯起來,可使用下列ostream的建構函式:
ostrstream ostr(
char
*buf
,int size
,int mode
=ios
::out
);其中,buf是指向陣列的指標,該陣列接收寫入流的字元。陣列的長度由引數
size
確定。預設時,流以輸出方式開啟,但也可以將幾項或在一起復合為所需的方式(例如,可以包含
ios::
使輸出新增在陣列中已存在的資訊的尾部)。
mode
的預設值可以滿足大多數的要求。一旦開啟了乙個基於陣列的輸出流,所有對這個流的輸出就放在陣列中。但是,任何輸出都不能寫到陣列的限界之外,任何這種企圖都會導致錯誤。
下面是乙個介紹基於陣列的輸出流的簡單程式。
#include
#include
using namespace std;
int main()
使用陣列作輸入:
要將輸入流和陣列關聯起來,可使用下列istrstream的建構函式:
istrstream istr(
char*buf
);其中,buf是指向陣列的指標,該陣列作為每次向流輸入的字元源。
buf所指的陣列必須以空結束。空結束符從不從陣列中讀取。
下面是乙個用字串輸入的例子:
#include
#include
using namespace std;
int main()
sstream操作相關 set和map
我們讀取輸入時一般無法讀取空白字元 空格 換行 tab 但使用getline cin,str 可以讀取一行輸出,獲得的str,我們可以建立乙個stringstream ss str 再讓ss 給其他接受者。這裡的接受者不止可以是string類 甚至可以是int型別的數字 下面是幾道杭電oj的例題 h...
sstream庫的使用
庫定義了三種類 istringstream ostringstream和stringstream,分別用來進行string流的輸入 輸出和輸入輸出操作。另外,每個類都有乙個對應的寬字符集版本。簡單起見,主要以stringstream為中心,因為每個轉換都要涉及到輸入和輸出操作。注意,使用string...
C 中的sstream學習
接下來我們繼續看一下c 風格的串流控制,c 引入了ostringstream istringstream stringstream這三個類,要使用他們建立物件就必須包含sstream.h標頭檔案。istringstream類用於執行c 風格的串流的輸入操作。ostringstream類用於執行c風格...