C++:流
流:不要把他理解的太復(fù)雜,就簡(jiǎn)單的理解為流水,從一個(gè)地方輸送到另外一個(gè)地方。從數(shù)據(jù)層面理解:數(shù)據(jù)輸入和輸出的過(guò)程也是數(shù)據(jù)傳輸?shù)倪^(guò)程。數(shù)據(jù)像水一樣從一個(gè)地方流動(dòng)到另一個(gè)地方,因此,在 C++ 中將此過(guò)程稱為 “流(stream)”。
比如c++中的輸入輸出流,就是cin,cout。分別用于從鍵盤(pán)輸入數(shù)據(jù)和向屏幕輸出數(shù)據(jù)(簡(jiǎn)稱為標(biāo)準(zhǔn) I/O)。除此之外,程序還可以從文件中讀入數(shù)據(jù),以及向文件中寫(xiě)入數(shù)據(jù)(簡(jiǎn)稱為文件 I/O)。
在 C++ 的標(biāo)準(zhǔn)類庫(kù)中,將用于進(jìn)行數(shù)據(jù)輸入輸出的類統(tǒng)稱為“流類”。cin 是流類 istream 的對(duì)象,cout 是流類 ostream 的對(duì)象。要使用流類,需要在程序中包含 iostream 頭文件。
iostream 頭文件中定義了四個(gè)標(biāo)準(zhǔn)流對(duì)象,它們是 cin、cout、cerr 和 clog。
- cin 對(duì)應(yīng)于標(biāo)準(zhǔn)輸入流,用于從鍵盤(pán)讀取數(shù)據(jù),也可以被重定向?yàn)閺奈募凶x取數(shù)據(jù)。
- cout 對(duì)應(yīng)于標(biāo)準(zhǔn)輸出流,用于向屏幕輸出數(shù)據(jù),也可以被重定向?yàn)橄蛭募?xiě)入數(shù)據(jù)。
- cerr 對(duì)應(yīng)于標(biāo)準(zhǔn)錯(cuò)誤輸出流,用于向屏幕輸出出錯(cuò)信息,不能被重定向。
- clog 對(duì)應(yīng)于標(biāo)準(zhǔn)錯(cuò)誤輸出流,用于向屏幕輸出出錯(cuò)信息,不能被重定向。
cerr 和 clog的區(qū)別在于:cerr 不使用緩沖區(qū),直接向顯示器輸出信息;而輸出到 clog 中的信息會(huì)先被存放到緩沖區(qū),緩沖區(qū)滿或者刷新時(shí)才輸出到屏幕。
cout 可以被重定向,而 cerr 不能。所謂重定向,就是將輸入的源或輸出的目的地改變。例如,cout 本來(lái)是輸出到屏幕上的,但是經(jīng)過(guò)重定向,本該輸出到屏幕上的東西就可以被輸出到文件中。
freopen("test.txt", "w", stdout); //將標(biāo)準(zhǔn)輸出重定向到 test.txt文件
freopen 是一個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù),第二個(gè)參數(shù) w 代表寫(xiě)模式,第三個(gè)參數(shù)代表標(biāo)準(zhǔn)輸出。該語(yǔ)句的作用是將標(biāo)準(zhǔn)輸出重定向?yàn)?test.txt 文件。重定向之后,所有對(duì) cout 的輸出都不再出現(xiàn)在屏幕上,而是出現(xiàn)在 test.txt 文件中
cin 也是可以被重定向的。如果在程序中加入
freopen("input.dat", "r", stdin);
第二個(gè)參數(shù) r 代表讀入方式,第三個(gè)參數(shù) stdin 代表標(biāo)準(zhǔn)輸入。執(zhí)行此語(yǔ)句后,cin 就不再?gòu)逆I盤(pán)讀入數(shù)據(jù),而是從 input.dat 文件中讀人數(shù)據(jù),input.dat 文件中有什么,就相當(dāng)于從鍵盤(pán)輸入了什么。
文件參照博客:https://mp.csdn.net/console/editor/html/104722549
?
總結(jié)
- 上一篇: c++:文件操作1 文件的打开
- 下一篇: C++:析构函数