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

在C語言中,我們可以使用函數(shù)freopen()將現(xiàn)有的FILE指針重定向到另一個(gè)流。
freopen()的原型為
FILE * freopen(const char *文件名,const char *模式,F(xiàn)ILE * stream);
例如,將標(biāo)準(zhǔn)輸出重定向?yàn)橐粋€(gè)文本文件,我們可以編寫
freopen(“ text_file.txt”,“ w”,stdout);
盡管C ++仍支持此方法,但本文討論了另一種重定向I / O流的方法。

C ++是一種面向?qū)ο蟮木幊陶Z言,它使我們不僅能夠定義自己的流,而且還可以重定向標(biāo)準(zhǔn)流。因此,在C ++中,流是一個(gè)對(duì)象,其行為由類定義。因此,任何表現(xiàn)得像流的東西都是流。
C ++中的Streams對(duì)象主要分為三種類型:
(1)istream:此類型的Stream對(duì)象只能從流中執(zhí)行輸入操作
(2)ostream:這些對(duì)象只能用于輸出操作。
(3)iostream:可用于輸入和輸出操作
所有這些類以及文件流類都從以下類派生:ios和streambuf。因此,文件流和IO流對(duì)象的行為類似。
所有流對(duì)象還具有類streambuf的關(guān)聯(lián)數(shù)據(jù)成員。簡單地說,streambuf對(duì)象是流的緩沖區(qū)。從流中讀取數(shù)據(jù)時(shí),我們不會(huì)直接從源中讀取數(shù)據(jù),而是從鏈接到源的緩沖區(qū)中讀取數(shù)據(jù)。同樣,首先在緩沖區(qū)上執(zhí)行輸出操作,然后在需要時(shí)刷新緩沖區(qū)(將其寫入物理設(shè)備)。
C ++允許我們?yōu)槿魏瘟髟O(shè)置流緩沖區(qū)。因此,重定向流的任務(wù)只是減少到更改與流關(guān)聯(lián)的流緩沖區(qū)。因此,要將流A重定向到流B,我們需要做
獲取A的流緩沖區(qū)并將其存儲(chǔ)在某處
將A的流緩沖區(qū)設(shè)置為B的流緩沖區(qū)
如果需要,將A的流緩沖區(qū)重置為其先前的流緩沖區(qū)
我們可以使用函數(shù)ios :: rdbuf()來執(zhí)行兩次操作。
1)stream_object.rdbuf():返回指向stream_object的流緩沖區(qū)的指針
2)stream_object.rdbuf(streambuf * p):將流緩沖區(qū)設(shè)置為p指向的對(duì)象
這是下面的示例程序以顯示步驟:

注意:
以上步驟可以濃縮為一個(gè)步驟

希望對(duì)你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍分享:

編程學(xué)習(xí)視頻分享:
