日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ open 打开文件

發(fā)布時間:2025/3/12 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ open 打开文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在對文件進(jìn)行讀寫操作之前,先要打開文件。打開文件有以下兩個目的:

1 . 通過指定文件名,建立起文件和文件流對象的關(guān)聯(lián),以后要對文件進(jìn)行操作時,就可以通過與之關(guān)聯(lián)的流對象來進(jìn)行。

2 . 指明文件的使用方式。使用方式有只讀、只寫、既讀又寫、在文件末尾添加數(shù)據(jù)、以文本方式使用、以二進(jìn)制方式使用等多種。

打開文件可以通過以下兩種方式進(jìn)行:

1 . 調(diào)用流對象的 open 成員函數(shù)打開文件。

2 . 定義文件流對象時,通過構(gòu)造函數(shù)打開文件。

關(guān)閉文件時,調(diào)用文件流對象的 close 成員函數(shù)即可。

使用 open 函數(shù)打開文件

先看第一種文件打開方式。以 ifstream 類為例,該類有一個 open 成員函數(shù),其他兩個文件流類也有同樣的 open 成員函數(shù):

void open(const char* szFileName, int mode)

第一個參數(shù)是指向文件名的指針,第二個參數(shù)是文件的打開模式標(biāo)記。

文件的打開模式標(biāo)記代表了文件的使用方式,這些標(biāo)記可以單獨使用,也可以組合使用。

文件打開模式標(biāo)記

ios::binary 可以和其他模式標(biāo)記組合使用,例如:

ios::in | ios::binary表示用二進(jìn)制模式,以讀取的方式打開文件。ios::out | ios::binary表示用二進(jìn)制模式,以寫入的方式打開文件。

一般來說,如果處理的是文本文件,那么用文本方式打開會方便一些。但其實任何文件都可以以二進(jìn)制方式打開來讀寫。

在流對象上執(zhí)行 open 成員函數(shù),給出文件名和打開模式,就可以打開文件。判斷文件打開是否成功,可以看“對象名”這個表達(dá)式的值是否為 true,如果為 true,則表示文件打開成功。

下面的程序演示了如何打開文件:

#include <iostream> #include <fstream> using namespace std; int main() {ifstream inFile;inFile.open("c:\\tmp\\test.txt", ios::in);if (inFile) //條件成立,則說明文件打開成功inFile.close();elsecout << "test.txt doesn't exist" << endl;ofstream oFile;oFile.open("test1.txt", ios::out);if (!oFile) //條件成立,則說明文件打開出錯cout << "error 1" << endl;elseoFile.close();oFile.open("tmp\\test2.txt", ios::out | ios::in);if (oFile) //條件成立,則說明文件打開成功oFile.close();elsecout << "error 2" << endl;fstream ioFile;ioFile.open("..\\test3.txt", ios::out | ios::in | ios::trunc);if (!ioFile)cout << "error 3" << endl;elseioFile.close();return 0; }

調(diào)用 open 成員函數(shù)時,給出的文件名可以是全路徑的,如第 7 行的c:\tmp\test.txt, 指明文件在 c 盤的 tmp 文件夾中;也可以只給出文件名,如第 13 行的test1.txt,這種情況下程序會在當(dāng)前文件夾(也就是可執(zhí)行程序所在的文件夾)中尋找要打開的文件。

第 18 行的tmp\test2.txt給出的是相對路徑,說明 test2.txt 位于當(dāng)前文件夾的 tmp 子文件夾中。第 24 行的…\test3.txt也是相對路徑,代表上一層文件夾,此時要到當(dāng)前文件夾的上一層文件夾中查找 test3.txt。此外,…\…\test4.txt、…\tmp\test4.txt等都是合法的帶相對路徑的文件名。

使用流類的構(gòu)造函數(shù)打開文件

定義流對象時,在構(gòu)造函數(shù)中給出文件名和打開模式也可以打開文件。以 ifstream 類為例,它有如下構(gòu)造函數(shù):

ifstream::ifstream (const char* szFileName, int mode = ios::in, int);

第一個參數(shù)是指向文件名的指針;第二個參數(shù)是打開文件的模式標(biāo)記,默認(rèn)值為ios::in; 第三個參數(shù)是整型的,也有默認(rèn)值,一般極少使用。

用流類的構(gòu)造函數(shù)打開文件:

#include <iostream> #include <fstream> using namespace std; int main() {ifstream inFile("c:\\tmp\\test.txt", ios::in);if (inFile)inFile.close();elsecout << "test.txt doesn't exist" << endl;ofstream oFile("test1.txt", ios::out);if (!oFile)cout << "error 1";elseoFile.close();fstream oFile2("tmp\\test2.txt", ios::out | ios::in);if (!oFile2)cout << "error 2";elseoFile.close();return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的C++ open 打开文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。