四步骤

文本文件写

方法一:

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

void main(){
	int ar[] = {12,23,34,45,56,67,78,89,90,100};
	//1:定义文件对象
	ofstream ofile;  //outfile简写为of
	//2:打开文件并判断
	//相当于C语言中的fopen("Test.txt","w");
	ofile.open("Test1.txt",ios::out);  //C++中,以对象打开文件名,并说明模式
	if(!ofile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输出运算对文件进行写入
	for(int i = 0; i<sizeof(ar)/sizeof(int); ++i){
		ofile<<ar[i]<<" ";
	}
	//4:关闭文件
	ofile.close();
}

方法二:

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

void main(){
	int ar[] = {12,23,34,45,56,67,78,89,90,100};
	//1:定义文件对象
	ofstream ofile("Test1.txt",ios::out);  //步骤1和2合并
	//2:打开文件并判断
	//相当于C语言中的fopen("Test.txt","w");
	//ofile.open("Test1.txt",ios::out);  //C++中,以对象打开文件名,并说明模式
	if(!ofile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输出运算对文件进行写入
	for(int i = 0; i<sizeof(ar)/sizeof(int); ++i){
		ofile<<ar[i]<<" ";
	}
	//4:关闭文件
	ofile.close();
}

文本文件读

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

//读文件
void main(){
	int ar[10];
	//1:定义文件对象
	ifstream ifile;  //infile简写为if
	//2:打开文件并判断
	ifile.open("Test1.txt",ios::in);  //C++中,以对象打开文件名,并说明模式
	if(!ifile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输入运算对文件进行读
	for(int i = 0; i<sizeof(ar)/sizeof(int); ++i){
		//cin>>ar[i];
		ifile>>ar[i];
	}
	//4:关闭文件
	ifile.close();
}

二进制文件写

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

//二进制文件写
void main(){
	int ar[] = {12,23,34,45,56,67,78,89,90,100};
	//1:定义文件对象
	ofstream ofile;  //outfile简写为of
	//2:打开文件并判断
	//相当于C语言中的fopen("Test.txt","w");
	ofile.open("Test2.txt",ios::out | ios::binary);  //C++中,以对象打开文件名,并说明模式
	if(!ofile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输出运算对文件进行写入
	ofile.write((char*)ar,sizeof(ar));  //只需知道起始位置和总共的个数即可进行输出
	//4:关闭文件
	ofile.close();
}

二进制文件读

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

//二进制文件读
void main(){
	int ar[10];
	//1:定义文件对象
	ifstream ifile;  //infile简写为if
	//2:打开文件并判断
	ifile.open("Test2.txt",ios::in | ios::binary);  //C++中,以对象打开文件名,并说明模式
	if(!ifile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输入运算对文件进行读
	ifile.read((char*)ar,sizeof(ar));
	//4:关闭文件
	ifile.close();
}

随机读取

但是如果一不小心读到文件外面,就会一直是错误的数据。

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

//随机读取
void main(){
	//1:定义文件对象
	ifstream ifile;  //infile简写为if
	//2:打开文件并判断
	ifile.open("Test1.txt",ios::in);  //C++中,以对象打开文件名,并说明模式
	if(!ifile){
		cerr<<"Open File Fail!"<<endl;
		exit(1);  //缺少stdlib头文件
	}
	//3:用输入运算对文件进行读
	int pos;  //
	int value;
	while(1){
		cout<<"Please input the pos:";
		cin>>pos;
		ifile.seekg(pos*3,ios::beg);  //pos*3说明一个数据占2个字节,加上空格就是3个字节,beg说明相对于起始位置
		ifile>>value;  //用文件读入
		cout<<"value = "<<value<<endl;
	}
	//4:关闭文件
	ifile.close();
}

有个缺点:如果数据大小不一,pos*3 就会实现,改为二进制读,永远是 3 个字节一单位。

 

 版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~