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);
#i nclude
#i nclude
using namespace std;
int main()
{
istringstream istr;
istr.str("1 56.7",);
//上述兩個過程可以簡單寫成 istringstream istr("1 56.7");
cout << istr.str()<
float b;
istr>>a;
cout<
istr>>b;
cout<
system("pause");
}
上例中,構造字符串流的時候,空格會成為字符串參數的內部分界,例子中對a,b對象的輸入"賦值"操作證明了這一點,字符串的空格成為了整型數據與浮點型數據的分解點,利用分界獲取的方法我們事實上完成了字符串到整型對象與浮點型對象的拆分轉換過程。
str()成員函數的使用可以讓istringstream對象返回一個string字符串(例如本例中的輸出操作(cout<
ostringstream同樣是由一個string對象構造而來,ostringstream類向一個string插入字符。
在上例代碼中,我們通過put()或者左移操作符可以不斷向ostr插入單個字符或者是字符串,通過str()函數返回增長過後的完整字符串數據,但值 得注意的一點是,當構造的時候對象內已經存在字符串數據的時候,那麼增長操作的時候不會從結尾開始增加,而是修改原有數據,超出的部分增長。
對於stringstream了來說,不用我多說,大家也已經知道它是用於C++風格的字符串的輸入輸出的。
stringstream::stringstream(string str);
示例代碼如下:
除此而外,stringstream類的對象我們還常用它進行string與各種內置類型數據之間的轉換。
ostringstream的構造函數原形如下:
ostringstream::ostringstream(string str);
示例代碼如下:
#i nclude
#i nclude
#i nclude
using namespace std;
int main()
{
ostringstream ostr;
//ostr.str("abc");//如果構造的時候設置了字符串參數,那麼增長操作的時候不會從結 尾開始增加,而是修改原有數據,超出的部分增長
ostr.put('d');
ostr.put('e');
ostr<<"fg";
string gstr = ostr.str();
cout<
}
[ basic_stringbuf::str :
Sets or gets the text in a string buffer without changing the write position. ]
stringstream的構造函數原形如下:
#i nclude
#i nclude
#i nclude
using namespace std;
int main()
{
stringstream ostr("ccc");
ostr.put('d');
ostr.put('e');
ostr<<"fg";
string gstr = ostr.str();
cout<
char a;
ostr>>a;
cout<
system("pause");
}
示例代碼如下:
#i nclude
#i nclude
#i nclude
using namespace std;
int main()
{
stringstream sstr;
//--------int轉string-----------
int a=100;
string str;
sstr<
sstr>>str;
cout<
sstr.clear();//如果你想通過使用同一stringstream對象實現多種類型的轉換,請注意在每一次轉換之後都必須調用clear()成員函數。
string name = "colinguan";
char cname[200];
sstr<
cout<
}#include