/* 字符串流 在字符數組中可以存放字符,也可以存放整數、浮點數以及其他類型的數據。在向字符數組存入數據之前,要先將數據從二進制形式轉換為ASCII代碼,然后存放在緩沖區,再從緩沖區送到字符數組。從字符數組讀數據時,先將字符數組中的數據送到緩沖區,在賦給變量前要先將ASCII代碼轉換為二進制形式。總之,流緩沖區中的數據格式與字符數組相同。 文件流類有ifstream,ofstream和fstream,而字符串流類有istrstream,ostrstream和strstream。文件流類和字符串流類都是ostream,istream和iostream類的派生類,因此對它們的操作方法是基本相同的。向內存中的一個字符數組寫數據就如同向文件寫數據一樣,但有點不同: (1) 輸出時數據不是流向外存文件,而是流向內存中的一個存儲空間。輸入時從內存中的存儲空間讀取數據。 (2) 字符串流對象關聯的不是文件,而是內存中的一個字符數組,因此不需要打開和關閉文件。 (3) 每個文件的最后都有一個文件結束符,表示文件的結束。而字符串流所關聯的字符數組中沒有相應的結束標志,用戶要指定一個特殊字符作為結束符,在向字符數組寫入全部數據后要寫入此字符。 字符串流類沒有open成員函數,因此要在建立字符串流對象時通過給定參數來確立字符串流與字符數組的關聯。即通過調用構造函數來解決此問題。建立字符串流對象的方法與含義如下: 1. 建立輸出字符串流對象 ostrstream類提供的構造函數的原型為 ostrstream::ostrstream(char *buffer,int n,int mode=ios::out); buffer是指向字符數組首元素的指針,n為指定的流緩沖區的大小(一般選與字符數組的大小相同,也可以不同),第個參數是可選的,默認為ios::out方式。可以用以下語句建立輸出字符串流對象并與字符數組建立關聯: ostrstream strout(ch1,20); 作用是建立輸出字符串流對象strout,并使strout與字符數組ch1關聯(通過字符串流將數據輸出到字符數組ch1),流緩沖區大小為。 2. 建立輸入字符串流對象 istrstream類提供了兩個帶參的構造函數,原型為 istrstream::istrstream(char *buffer); istrstream::istrstream(char *buffer,int n); buffer是指向字符數組首元素的指針,用它來初始化流對象(使流對象與字符數組建立關聯)。可以用以下語句建立輸入字符串流對象: istrstream strin(ch2); 作用是建立輸入字符串流對象strin,將字符數組ch2中的全部數據作為輸入字符串流的內容。 istrstream strin(ch2,20); 流緩沖區大小為,因此只將字符數組ch2中的前個字符作為輸入字符串流的內容。 3. 建立輸入輸出字符串流對象 strstream類提供的構造函數的原型為 strstream::strstream(char *buffer,int n,int mode); 可以用以下語句建立輸入輸出字符串流對象: strstream strio(ch3,sizeof(ch3),ios::in|ios::out); 作用是建立輸入輸出字符串流對象,以字符數組ch3為輸入輸出對象,流緩沖區大小與數組ch3相同。 以上個字符串流類是在頭文件strstream中定義的,因此程序中在用到istrstream, ostrstream和strstream類時應包含頭文件strstream(在GCC中,用頭文件strstream)。 */
轉載于:https://www.cnblogs.com/wwj9413/archive/2011/11/27/2292804.html