C++中Fstream文件流與freopen重定向的示例分析

這篇文章給大家分享的是有關(guān)C++中Fstream文件流與freopen重定向的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

宿州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,宿州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為宿州上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的宿州做網(wǎng)站的公司定做!

目錄freopen重定向fstream文件流freopen 重定向

使用方法:

freopen(“in.txt”,“r”,stdin);//從in.txt讀入
freopen(“out.txt”,“w”,stdout);//向out.txt輸出
freopen(“CON”,“r”,stdin);//從控制臺(tái)讀入
freopen(“CON”,“w”,stdout);//向控制臺(tái)輸出
fclose(stdin);//關(guān)閉輸入,可以省略,但建議加上
fclose(stdout);//關(guān)閉輸出,可以省略,但建議加上

默認(rèn)是從控制臺(tái)(Command)讀入,輸出哦!

實(shí)例

#include<iostream>
#include<cstdio>//freopen要包含cstdio頭文件
using namespace std;

int main() {
	freopen("in.txt","r",stdin);//從in.txt讀入
	freopen("out.txt","w",stdout);//向out.txt輸出
	int a;
	cin >> a;
	cout << a;
	fclose(stdin);//關(guān)閉輸入,可以省略,但建議加上
	fclose(stdout);//關(guān)閉輸出,可以省略,但建議加上
	return 0;
}

代碼寫好了,我們編譯,但先不要運(yùn)行。
然后再新建in.txt,往里面寫上666,保存,退出。


C++中Fstream文件流與freopen重定向的示例分析

然后我們運(yùn)行main.exe,然后打開out.txt(可能有2,3秒的延遲,刷新即可)


C++中Fstream文件流與freopen重定向的示例分析

瞧,成功了!

更多

stdin:標(biāo)準(zhǔn)輸入
stdout:標(biāo)準(zhǔn)輸出
“r”:Read,讀
“w”,Write,寫
由于fopen比較麻煩,我就不贅述了,可以去看其他博主的文章。
可以看一下這兩篇:??博客

博客還有fread和fwrite,大家可以借鑒以下。

優(yōu)缺點(diǎn)

使用方便,但不能方便在控制臺(tái)與文件之間轉(zhuǎn)換,且使用后system(“cls”)清屏?xí)А?/p>

fstream文件流
要使用fstream,您需要:

#include<fstream>
using namespace std;

兩個(gè)構(gòu)造函數(shù)的原型:

basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
basic_ofstream(const char* __s, ios_base::openmode __mode = ios_base::out|ios_base::trunc)

__s代表文件名,如"in.txt",也可以是絕對(duì)路徑,但最好不要有中文和空格。(前面freopen也是一樣)
ios_base::openmode即打開屬性,可以是下面幾種值:

ios::in 輸入(ifstream默認(rèn))
ios::out 輸出(ofstream默認(rèn))
ios::app(append)附加在末尾
ios::ate(at end)從末尾開始
ios::trunc有則覆蓋,無則創(chuàng)建
ios::nocreate如字面意思,如不存在則打開失敗
ios::noreplace如字面意思,如存在則打開失敗
ios::binary以二進(jìn)制形式打開/關(guān)閉,一般都會(huì)被忽略
如果要疊加多個(gè)屬性,用位或運(yùn)算符 | 連接即可。

實(shí)例

#include<iostream>
#include<fstream>//fstream
using namespace std;

int main() {
	ifstream fin("in.txt", ios::in/*可以省略*/);
	ofstream fout("out.txt", ios::out | ios::trunc/*可以省略*/);
	int a;
	fin >> a;
	fout << a << endl;
	fin.close();
	fout.close();
	return 0;
}

和剛剛結(jié)果一樣,就不放圖片了。
ifstream fin是創(chuàng)建了一個(gè)ifstream對(duì)象(就像cin是iostream已經(jīng)幫我們創(chuàng)建的一個(gè)istream對(duì)象)
ofstream fout和上面差不多。
.close()一定要加!不然可能出錯(cuò)?。?!
這里這么取名,只是本人習(xí)慣,大家起其他的也行。

成員函數(shù)

fstream的成員函數(shù)是真心多啊,怪不得功能強(qiáng)大!
這里只給大家介紹一些常用的。
這里只給大家介紹istream,ostream基本一樣。

fin.open(const char* __s, ios_base::openmode __mode = ios_base::in);

和構(gòu)造函數(shù)差不多,不解釋了。

if (!fin/*或fin.bad()或!fin.good()*/) {
	cout << "Unable to open!" << endl;
	return 0;
}

這個(gè)也很好懂,不解釋。

fin.eof()
fin.fail()
fin.bad()
fin.good()

四個(gè)函數(shù)返回值都是bool。
如果遇到文件末尾,則eof返回true。
如果操作失敗,則fail返回true。
如果eof和fail都返回false,則bad返回false。
如果bad返回false,則good返回true。
很繞,是不是!其實(shí),根據(jù)字面意思,都很好懂。
還有各種各樣的功能,請(qǐng)大家自己去探索吧!
再給大家推薦一個(gè)博客吧,大家自己去看:博客
還有,希望大家養(yǎng)成一個(gè)好習(xí)慣,再打開文件后,使用

if(!fin) cout << "Fin open Fail" << endl;
if(!fout) cout << "Fout open Fail" << endl;

來檢測(cè)是否成功!這樣做最保險(xiǎn)!

優(yōu)缺點(diǎn)
操作較為麻煩。但是功能挺多的,且十分強(qiáng)大!

感謝各位的閱讀!關(guān)于“C++中Fstream文件流與freopen重定向的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

分享標(biāo)題:C++中Fstream文件流與freopen重定向的示例分析
分享鏈接:http://muchs.cn/article34/pgdsse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、面包屑導(dǎo)航全網(wǎng)營(yíng)銷推廣、網(wǎng)站營(yíng)銷軟件開發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司