1.二进制文件写:将学生的信息写进students.dat二进制文件中
#include <iostream>
#include <fstream>
using namespace std;
class CStudent{
public:
char szName[20];
int nScore;
};
int main(){
CStudent s;
ofstream OutFile("C:\\students.dat",ios::out | ios::binary);
while(cin>>s.szName>>s.nScore)
{
if(stricmp(s.szName,"exit")==0) //当名字为exit时结束输入
break;
OutFile.write((char*)&s,sizeof(s)); //以类s的大小写进文件OutFile
}
OutFile.close();
return 0;
}
2.二进制文件的读:
#include <iostream>
#include <fstream>
using namespace std;
class CStudent{
public:
char szName[20];
int nScore;
};
int main(){
CStudent s;
ifstream inFile("C:\\students.dat",ios::in | ios::binary);
if(!inFile)
{
cout<<"File open error"<<endl;
return 0;
}
while(inFile.read((char*)&s,sizeof(s)))
{
int nReadedBytes=inFile.gcount(); //统计一共读了多少个字节
cout<<s.szName<<"\t"<<s.nScore<<"\t"<<nReadedBytes<<endl;
}
inFile.close();
return 0;
}
执行效果:
3.二进制文件的定位,将students.dat中第三个学生换成Mike
#include <iostream>
#include <fstream>
using namespace std;
class CStudent{
public:
char szName[20];
int nScore;
};
int main(){
CStudent s;
fstream ioFile("C:\\students.dat",ios::in | ios::out |ios::binary);
if(!ioFile)
{
cout<<"File open error"<<endl;
return 0;
}
ioFile.seekp(2*sizeof(s),ios::beg); //定位写指针到第三个记录
ioFile.write("Mike",strlen("Mike")+1);
ioFile.seekg(0,ios::beg); //定位读指针到文件开头
while(ioFile.read((char*)&s,sizeof(s)))
{
int nReadedBytes=ioFile.gcount(); //统计一共读了多少个字节
cout<<s.szName<<"\t"<<s.nScore<<"\t"<<nReadedBytes<<endl;
}
ioFile.close();
return 0;
}
执行效果:
4.将源文件src.dat中的数据逐个(字符)复制到目的文件dest.dat中:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char* argv[]){
if(argc != 3)
{
cout<<"Arguments missing!"<<endl;
return 0;
}
ifstream InFile(argv[1],ios::in | ios::binary); //第二个命令行参数指定读文件
if(!InFile) //判断读文件是否打开成功
{
cout<<"Source file open error!"<<endl;
return 0;
}
ofstream OutFile(argv[2],ios::out | ios::binary); //第三个参数指定写文件
if(!OutFile) //判断写文件是否打开成功
{
cout<<"Destination file open error!"<<endl;
return 0;
}
char c;
while(InFile.get(c)) //每次读取一个字符
{
OutFile.put(c); //每次写入一个字符
}
OutFile.close();
InFile.close();
return 0;
}
打开命令行窗口,输入如下指令即可:
来自北京大学MOOC课件