C/C++編程筆記:C++中的I / O重定向

在C語言中,咱們可使用函數freopen()將現有的FILE指針重定向到另外一個流。ios

freopen()的原型爲編程

FILE * freopen(const char *文件名,const char *模式,FILE * stream);微信

例如,將標準輸出重定向爲一個文本文件,咱們能夠編寫編程語言

freopen(「 text_file.txt」,「 w」,stdout);函數

儘管C ++仍支持此方法,但本文討論了另外一種重定向I / O流的方法。學習

C ++是一種面向對象的編程語言,它使咱們不只可以定義本身的流,並且還能夠重定向標準流。所以,在C ++中,流是一個對象,其行爲由類定義。所以,任何表現得像流的東西都是流。spa

C ++中的Streams對象主要分爲三種類型:指針

(1)istream:此類型的Stream對象只能從流中執行輸入操做
視頻

(2)ostream:這些對象只能用於輸出操做。對象

(3)iostream:可用於輸入和輸出操做

全部這些類以及文件流類都從如下類派生:ios和streambuf。所以,文件流和IO流對象的行爲相似。

全部流對象還具備類streambuf的關聯數據成員。簡單地說,streambuf對象是流的緩衝區。從流中讀取數據時,咱們不會直接從源中讀取數據,而是從連接到源的緩衝區中讀取數據。一樣,首先在緩衝區上執行輸出操做,而後在須要時刷新緩衝區(將其寫入物理設備)。

C ++容許咱們爲任何流設置流緩衝區。所以,重定向流的任務只是減小到更改與流關聯的流緩衝區。所以,要將流A重定向到流B,咱們須要作

獲取A的流緩衝區並將其存儲在某處

將A的流緩衝區設置爲B的流緩衝區

若是須要,將A的流緩衝區重置爲其先前的流緩衝區

咱們可使用函數ios :: rdbuf()來執行兩次操做。

1)stream_object.rdbuf():返回指向stream_object的流緩衝區的指針

2)stream_object.rdbuf(streambuf * p):將流緩衝區設置爲p指向的對象

這是下面的示例程序以顯示步驟:

 

 

注意:

以上步驟能夠濃縮爲一個步驟

 

 

但願對你有幫助~

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~

C語言C++編程學習交流圈子,QQ羣1090842465點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習書籍分享:

編程學習視頻分享:

相關文章
相關標籤/搜索