柚子快報(bào)激活碼778899分享:c++
柚子快報(bào)激活碼778899分享:c++
ofstream是從內(nèi)存到硬盤,ifstream是從硬盤到內(nèi)存。
在c++中,有一個(gè)stream這個(gè)類,所有的I/O的操作都是以這個(gè)類為基礎(chǔ)的。
stream這個(gè)類有兩個(gè)重要的運(yùn)算符:
1.插入器 <<
向流輸出數(shù)據(jù),例如cout <"write out";就是把字符串輸出到標(biāo)準(zhǔn)輸出流。
2.析取器 >>
從流中輸入數(shù)據(jù),例如cin >> x; 表示從標(biāo)準(zhǔn)輸入流中讀取一個(gè)指定類型的數(shù)據(jù)。
在C++中,對文件的操作是通過stream的子類fstream(file stream)來實(shí)現(xiàn)的,所以,要用這種方式操作文件,就必須加入頭文件
打開文件
在fstream類中,有一個(gè)成員函數(shù)open(),就是用來打開文件的,其原型是:
void open(const char* filename,int mode,int access);
參數(shù):
filename: 要打開的文件名
mode: 要打開文件的方式
access: 打開文件的屬性
打開文件的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下:
ios::app: 以追加的方式打開文件
ios::ate: 文件打開后定位到文件尾,ios:app就包含有此屬性
ios::binary: 以二進(jìn)制方式打開文件,缺省的方式是文本方式。兩種方式的區(qū)別見前文
ios::in: 文件以輸入方式打開(文件數(shù)據(jù)輸入到內(nèi)存)
ios::out: 文件以輸出方式打開(內(nèi)存數(shù)據(jù)輸出到文件)
ios::nocreate: 不建立文件,所以文件不存在時(shí)打開失敗
ios::noreplace:不覆蓋文件,所以打開文件時(shí)如果文件存在失敗
ios::trunc: 如果文件存在,把文件長度設(shè)為0
可以用“或”把以上屬性連接起來,如ios::out|ios::binary
打開文件的屬性取值是:
0:普通文件,打開訪問
1:只讀文件
2:隱含文件
4:系統(tǒng)文件
可以用“或”或者“+”把以上屬性連接起來,如3或1|2就是以只讀和隱含屬性打開文件。
例如:以二進(jìn)制輸入方式打開文件 file.txt
fstream file1;
file1.open("file.txt",ios::binary|ios::in,0);
如果open函數(shù)只有文件名一個(gè)參數(shù),則是以讀/寫普通文件打開,即:
file1.open("file.txt");
即為:
file1.open("file.txt",ios::in|ios::out,0);
fstream 還有和 open( )一樣的構(gòu)造函數(shù),對于上例,在定義的時(shí)侯就可以打開文件了:
fstream file1("file.txt");
fstream 有兩個(gè)子類:?ifstream(input file stream)?和?ofstream(outpu file stream)
ifstream默認(rèn)以輸入方式打開文件
ofstream默認(rèn)以輸出方式打開文件。
ifstream file1("aaa.txt");//以輸入方式打開文件
ofstream file2("bbb.txt");//以輸出方式打開文件
關(guān)閉文件
打開的文件使用完成后一定要關(guān)閉,fstream提供了成員函數(shù)close()來完成此操作,
ofstream outFile("out.txt");
outFile<<"hello world!"< outFile.close(); 代碼示例: #include #include #include std::string rand_str(int len) { std::string str = ""; int i; for (i = 0; i < len; ++i) { switch ((rand() % 3)) { case 1: str += ('A' + rand() % 26); break; case 2: str += ('a' + rand() % 26); break; default: str += ('0' + rand() % 10); break; } } return str; } int main0() { //隨機(jī)生成字符串,寫入txt中 std::ofstream outFile("out.txt"); if (!outFile) { std::cout << "File open error!" << std::endl; return false; } srand(time(NULL)); for (int i = 0; i < 10; i++) { std::string str = rand_str(10); outFile << str << std::endl; } outFile.close(); system("pause"); return 0; } int main() { //從txt中讀入字符串 std::ifstream inFile("out.txt"); if (!inFile) { std::cout << "Unable to open file" << std::endl; return -1; } std::string str; while (getline(inFile, str)) { std::cout << str << std::endl; } inFile.close(); system("pause"); return 0; } 當(dāng)從txt中讀取字符出的時(shí)候,用到了getline的函數(shù),需要加上 參考鏈接: C++ ofstream和ifstream詳細(xì)用法_c++ ofstream write 保存視頻文件怎么指定幀率_Happinesspills的博客-CSDN博客 柚子快報(bào)激活碼778899分享:c++ 文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。