首頁>技術>

在C語言中,我們可以使用函式freopen()將現有的FILE指標重定向到另一個流。

freopen()的原型為

FILE * freopen(const char *檔名,const char *模式,FILE * stream);

例如,將標準輸出重定向為一個文字檔案,我們可以編寫

freopen(“ text_file.txt”,“ w”,stdout);

C ++是一種面向物件的程式語言,它使我們不僅能夠定義自己的流,而且還可以重定向標準流。因此,在C ++中,流是一個物件,其行為由類定義。因此,任何表現得像流的東西都是流。

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++程式設計!彎道超車,快人一步!筆者這裡或許可以幫到你~

程式設計學習書籍分享:

程式設計學習影片分享:

分享(原始碼、專案實戰影片、專案筆記,基礎入門教程)

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • spring cloud 微服務呼叫鏈跟蹤