编写一个在文件中查找某种服装的数量并返回的函数。 以文件流的方式操作文件一样可以支持二进制方式的块读写。 第一行程序申明了 ofstream 的对象 cl,并以二进制方式( ios::binary )打开文件c.dat(如果文件c.dat不存在,会先创建)用于输出( fstream 的对象的对象都是用于文件输出)。 二进制的块读出方式和块写入方式类似。 第一行程序申明 ifstream 的对象 fl ,并以二进制方式打开文件c.dat用于读。相关知识
文件流操作二进制文件的读写
写二进制文件
例如:ofstream cl("c.dat", ios::binary); int n = 10; cl.write((char*)&t,sizeof(t));
第三行则将整数 t 以块写入的方式写入文件c.dat。函数 write 的第一个参数是要写入文件的数据首地址,必须是char*类型,要写入的数据是 t,所以该实参为&t,并进行了类型转换。第二个参数是要写入文件的字节数,t 整型变量,所占字节数可以用sizeof(t)求得。读二进制文件
例如下面的程序可以将写到文件c.dat中的整数读出:ifstream fl("c.dat", ios::binary); int n; fl.read((char*)&n,sizeof(n));
第三行从文件中读出一个整数。read 函数的第一个参数是读出的数据要放到内存中的位置,类型为char*。读出的整数要赋值给 n,所以该实参为&n,并进行了类型转换。第二个参数是读出的字节数,一个整数的字节数可以用sizeof(n)求得。//test.cpp #include <iostream> #include <fstream> using namespace std; //结构clothing struct clothing { char label[12]; //编号 int numberRemaining; //剩余件数 }; //声明外部函数,函数getNumber在其它源文件中实现 extern int getNumber(ifstream &ifile, char *label); int main() { int n,i; char le[100]; clothing t; //准备文件 //打开文件,二进制方式 ofstream cloth("cloth.dat", ios::binary); cin>>n; //输入服装种类数量 for(i=0;i<n;i++) { cin>>t.label; //输入服装编号 cin>>t.numberRemaining; //输入服装剩余数量 //写入文件 cloth.write((char*)&t,sizeof(t)); } //关闭文件 cloth.close(); //打开文件用于读,二进制方式 ifstream fin("cloth.dat",ios::binary); //输入要查找的服装标签 cin>>le; //调用函数getNumber n = getNumber(fin,le); //输出服装件数 cout<<n<<endl; //关闭文件 fin.close(); return 0; }
//streambin.cpp #include <fstream> #include <string.h> #include <iostream> using namespace std; // 结构clothing struct clothing { char label[12]; // 编号 int numberRemaining; // 剩余件数 }; /* 函数getNumber:在文件ifile中查找标签为lable的服装数量 参数ifile:存放服装信息的文件,label:要查找的服装标签 返回值:标签为label的服装数量 说明:文件中ifile中存放着服装信息,服装信息为以二进制写入的一个个clothing结构变量 */ int getNumber(ifstream &ifile, char *label) { clothing t; // 读出种服装信息到t中 ifile.read((char*)&t,sizeof(clothing)); while(!ifile.eof()) { if(strcmp(label, t.label)==0) { return t.numberRemaining; } ifile.read((char*)&t,sizeof(clothing)); } return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算