關於streambuf一點東西

2021-08-25 23:44:16 字數 804 閱讀 6034

使用插入符和提取符時,一般程式設計師不知道或不必關心資料在**產生和消亡,不管處理的物件是標準i/o、檔案、記憶體還是新建立的類或裝置。

然而,重要的是與產生和消耗資料的輸入輸出流部分進行通訊為這部分提供統一的介面並隱藏底層實現,標準庫把他抽象成乙個類,成為streambuf.

每個輸入輸出流物件都包含乙個指向streambuf的指標。使用者可以直接訪問streambuf;例如,可以把原始位元組移入或者移出streambuf,而不需要用通過封裝它的輸入輸出流對其進行格式化。這通過呼叫streambuf物件的成員函式就可以實現。

為了能夠直接訪問streambuf,每個輸入輸出流物件都有乙個成員函式rdbuf(),它的返回值是乙個指向物件streambuf的指標,通過這個指標可以對streambuf物件進行訪問。更有趣的是,可以把streambuf指標和另外乙個輸入輸出流物件《連線在一起。這將把右側物件的字元全部都輸出到《左側的物件中去。這樣如果想把乙個輸入輸出流中的字元全部都移動到另乙個輸入輸出流中,就不需要通過令人厭煩的方法一次讀乙個字元或者是一行字元(會引起潛在的錯誤(暫時不知道會是什麼錯誤 記憶體洩漏?))

#include#includeusing namespace std; int main() { ifstream in("stype.cpp"); assure(in,"stype.cpp");//確保檔案被正確開啟 cout<

上述**中 檔案stype.cpp的全部內容就都在cout中了 ,這樣比一次移動如果字元要來的更有效率。

——以上內容摘自 thinking in c++ volume two

想說一點東西。。。。

ps 最近這幾次多校比賽,雖然題目,資料什麼的可能有些問題,但是有的人真心無聊的去蹭資料。所以想說點這幾次多校的感覺 比賽的時候能蹭過去算是能力,但是比賽完了還是要好好總結。換幾種思路可以,但還是不要把時間浪費在不必要的東西上。比賽中能過的題沒有過多找自身的原因,不要一味的歸結到運氣或者狀態。拍 測...

關於作業系統的一點東西

作業系統的組成 系統資源包括cpu 記憶體 輸入輸出裝置以及儲存在外存中的資訊.因此作業系統由 1 對cpu的使用進行管理的程序排程程式 2 對記憶體分配進行管理的記憶體管理程式 3 對輸入輸出裝置進行管理的裝置驅動程式 4 對外存中資訊進行管理的檔案系統 bios bios是基本輸入輸出系統 ba...

一點小東西

今天發現原來,getch getchar 很不同.getch 所在標頭檔案 conio.h 函式用途 從控制台讀取乙個字元,但不顯示在螢幕上 例如 char ch 或int ch getch 或ch getch 用getch 會等待你按下任意鍵,再繼續執行下面的語句 用ch getch 會等待你按下...