C++文件操作

除了標準輸入輸出流類istream、ostream和iostream類外,還有3個用於文件操作的文件類:

流的名稱

流的作用

ifstream類

從istream類派生的,用來支持從磁盤文件的輸入

ofstream類

從ostream類派生的,用來支持向磁盤文件的輸出

fstream類

從iostream類派生的,用來支持對磁盤文件的輸入輸出


1、調用成員函數open的一般形式爲:
    文件流對象.open(磁盤文件名, 輸入輸出方式);
磁盤文件名可以包括路徑,如"c:\new\\f1.dat",如缺省路徑,則默認爲當前目錄下的文件。

2、在定義文件流對象時指定參數
在聲明文件流類時定義了帶參數的構造函數,其中包含了打開磁盤文件的功能。因此,可以在定義文件流對象時指定參數,調用文件流類的構造函數來實現打開文件的功能。如
    ostream outfile("f1.dat",ios::out);

例如:

(1)ofstream outfile; 
outfile.open("f1.dat",ios::out);    //向文件中寫入數據,失敗返回0

(2)ofstream outfile("f1.dat", ios::out);

方 式

作用

ios::in

以輸入方式打開文件

ios::out

以輸出方式打開文件(這是默認方式),如果已有此名字的文件,則將其原有內容全部清除

ios::app

以輸出方式打開文件,寫入的數據添加在文件末尾

ios::ate

打開一個已有的文件,文件指針指向文件末尾

ios: :trunc

打開一個文件,如果文件已存在,則刪除其中全部數據,如文件不存在,則建立新文件。如已指定了 ios::out 方式,而未指定ios: :app,ios::ate,ios: :in,則同時默認此方式

ios:: binary

以二進制方式打開一個文件,如不指定此方式則默認爲ASCII方式

ios::nocreate

打開一個已有的文件,如文件不存在,則打開失敗。nocrcate的意思是不建立新文件

ios:: noreplace

如果文件不存在則建立新文件,如果文件已存在則操作失敗,replace 的意思是不更新原有文件

ios::in l ios::out

以輸入和輸出方式打開文件,文件可讀可寫

ios:: out | ios::binary

以二進制方式打開一個輸出文件

ios::in l ios::binar

以二進制方式打開一個輸入文件


判斷結尾:

每讀入一個字節,文件指針就後移一個字節。當文件指針移到最後,就會遇到文件結束EOF(文件結束符也佔一個字節,其值爲-1),此時流對象的成員函數eof的值爲非0值(一般設爲1),表示文件結束了。

#include<iostream>
#include <fstream>

using namespace std;

int main()
{
	char buffer[1024];
	ofstream outfile("QQ.txt", ios::out);//寫入文件
	outfile << "A" <<endl<<"B"<<endl;
	outfile.close();

	ifstream infile("QQ.txt",ios::in);//讀取文件
	while (!infile.eof())
	{
		infile.getline(buffer, 1000);
		cout << buffer;
	}
	outfile.close();

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章