对文件操作需要包含头文件<fstream>
文件类型:
- 文本文件:文件以文本的ascii码形式存储在计算机中
 - 二进制文件:文件以二进制形式存储在计算机中
 
文件操作三大类:
- ofstream:写操作(output to file)
 - ifstream:读操作(input from file)
 - fstream: 读写操作
 
写文件
- 
创建流对象
ofstream ofs; - 
打开文件
ofs.open("xxx.txt",打开方式) - 
写数据
ofs<<"xxxx"; - 
关闭文件
ofs.close(); - 
打开方式:
 
- ios::in 为读文件而打开文件
 - ios::out 为写文件而打开文件
 - ios::ate 初始位置:文件尾
 - ios::app 追加方式写
 - ios::trunc 如果文件存在,先删除再创建
 - ios::binary 二进制方式 多个打开方式之间用|
 
读文件
    #include <fstream>
    
    ifstream ifs;
    ifs.open("text.txt",ios::in);
    if(!ifs.isopen()){
    	cout<<"文件打开失败!"<<endl;
        return;
    }
    
    //1.
    char buf[1024]={0};
    while(ifs>>buf){
    	cout<<buf<<endl;
    }
    
    //2.
    char buf[1024]={0};
    while(ifs.getline(buf,sizeof(buf))){
    	cout<<buf<<endl;
    }
    
    //3.
    string buf;
    while(getline(ifs,buf)){
    	cout<<buf<<endl;
    }
    
    //4.
    char c;
    while((c=ifs.get())!=EOF){//没有读到文件尾:end of file
    	cout<<c;
    }
    
    ifs.close();
    
以二进制方式操作文件
函数原型:ostream& write(const char* buffer,int len)
   #include <ostream>
   #include <fstream>
   
   class person{
   public:
       char name[64];//在对二进制文件操作时最好不要用c++中的string
       int age;
   };
   
   void test(){
       //写入
       ofstream ofs;
       ofs.open("person.txt",ios::out|ios::binary);
       person p={"hh",12};
       ofs.write((const char)*p,sizeof(person));
       ofs.close();
       
       //读出
       ifstream ifs;
       ifs.open("person.txt",ios::in||ios::binary);
       if(!ifs.isopen()){
           cout<<"failed."<<endl;
           return;
       }
       Person p2;
       ifs.read((char *)&p2,sizeof(person));
   }

京公网安备 11010502036488号