C++文件讀寫


文件的使用步驟如下:

1.說明一個文件流對象,這又被稱為內部文件:

ifstream ifile; //只輸入用
ofstream ofile; //只輸出用
fstream iofile; //既輸入又輸出用

2.使用文件流對象的成員函數打開一個磁盤文件。這樣文件流對象和磁盤文件名之間建立聯系。文件流中說明了三個打開文件的成員函數。

void ifstream::open(const char*, int=ios::in, int=filebuf::openprot);
void ofstream::open(const char*, int=ios::out, int=filebuf::openport);
void fstream::open(const char*, int, int=filebuf::openport);

第一個參數為要打開的磁盤文件名。第二個參數為打開方式,有輸入(in),輸出(out)等,打開方式在ios基類中定義為枚舉類型。第三個參數為指定打開文件的保護方式,一般取缺省。

所以第二部可如下進行:

iofile.open("TEST.txt", ios::in | ios::out);

打開文件也應該判斷是否成功,若成功,文件流對象值為非零值,不成功則為0(NULL),文件流對象值物理上就是指它的地址。

因此打開一個文件完整的程序為:

fstream iofile("TEST.txt", ios::in | ios::out);
if(!iofile)
{
     cout<<"打開文件失敗!"<<"TEST.txt"<<endl;
     exit(1);//失敗退回操作系統    
}

3.使用提取和插入運算符對文件進行讀寫操作,或者使用成員函數進行讀寫。

4.關閉文件。三個文件流類各有一個關閉文件的成員函數。

void ifstrean::close();
void ofstream::close();
void fstream::close();

文件打開過程示例代碼如下

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

void main()
{
	int ar[] = {65,66,67,68,69,1134688,71,70,73,74}, br[10];
	ofstream ofile;//①
	ofile.open("TEST.txt", ios::out);//②
	if(!ofile)
	{
		cerr<<"Open File Fail."<<endl;
		exit(1);
	}
	for(int t=0; t<sizeof(ar)/sizeof(int); ++t)//③
		ofile<<ar[t]<<" ";//向文件內寫入
	ofile.close();//④

	ifstream ifile;
	ifile.open("TEST.txt", ios::in);
	if(!ifile)
	{
		cerr<<"Open File Fail."<<endl;
		exit(1);
	}
	for(int t=0; t<10; ++t)
		ifile>>br[t];//從文件內讀出並寫入br中
	ifile.close();
}

查看是否生成文件TEST.txt和br[10]內是否有數據

文件打開方式是在ios類中定義的,公有枚舉成員:

使用方式與格式控制符相同。

在C++中可以又程序移動文件指針,從而實現文件的隨機訪問,即可讀寫流中任意一段內容。一般文件很難准確定位,所以隨機訪問多用於二進制文件。

在ios類中說明了一個公有枚舉類型:

enum seek_dir
{
       beg=0,//文件開頭
       cur=1,//文件指針的當前位置
       end=2//文件結尾
}
#include<iostream>
#include<fstream>
using namespace std;

void main()
{
	int ar[] = {65,66,67,68,69,70,71,70,73,74}, br[10], pos,value;
	ofstream ofile;
	ofile.open("TEST.txt", ios::out);
	if(!ofile)
	{
		cerr<<"Open File Fail."<<endl;
		exit(1);
	}
	for(int i=0; i<sizeof(ar)/sizeof(int); ++i)
		ofile<<ar[i]<<" ";
	ofile.close();

	ifstream ifile;
	ifile.open("TEST.txt", ios::in);
	if(!ifile)
	{
		cerr<<"Open File Fail."<<endl;
		exit(1);
	}
	while(1)
	{
		cout<<"input pos = ";
		cin>>pos;
		ifile.seekg(3*pos, ios::beg);
		ifile>>value;
		cout<<value<<endl;
	}
	ifile.close();
}

運行結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM