C++引入了ostringstream、istringstream、stringstream這三個類,要使用他們建立對象就必須包含sstream.h頭檔案。
istringstream類用于執行C++風格的串流的輸入操作。
stringstream類同時可以支援C++風格的串流的輸入輸出操作。
strstream類同時可以支援C風格的串流的輸入輸出操作。
istringstream類是從istream(輸入流類)和stringstreambase(c++字元串流基類)派生而來,ostringstream是從ostream(輸出流類)和stringstreambase(c++字元串流基類)派生而來,stringstream則是從iostream(輸入輸出流類)和和stringstreambase(c++字元串流基類)派生而來。
他們的繼承關系如下圖所示:
istringstream是由一個string對象構造而來,istringstream類從一個string對象讀取字元。
istringstream的構造函數原形如下:
istringstream::istringstream(string str);
#include <iostream>
#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;
}
上例中,構造字元串流的時候,空格會成為字元串參數的内部分界,例子中對a,b對象的輸入"指派"操作證明了這一點,字元串的空格成為了整型資料與浮點型資料的分解點,利用分界擷取的方法我們事實上完成了字元串到整型對象與浮點型對象的拆分轉換過程。
str()成員函數的使用可以讓istringstream對象傳回一個string字元串(例如本例中的輸出操作(cout<<istr.str();)。