在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語言編程學習基地
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
編程學習書籍分享:
編程學習視頻分享: