简单二进制文件读写,多文件

/*Demo9.1.cpp*/

 #include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include "UserList.h"
using namespace std; int showMain()
{
system("cls");
cout<<"1.增加"<<endl;
cout<<"2.删除"<<endl;
cout<<"3.修改"<<endl;
cout<<"4.查询"<<endl;
cout<<"0.退出"<<endl;
cout<<"请选择:";
cin.sync();
int c;
cin>>c;
return c;
} void ADD(UserList &L)
{
cout<<"input:"<<endl;
string id,name,password;
cin>>id>>name>>password;
User u(id,name,password);
L.Add(u);
}
void DEL(UserList &L)
{cerr<<"功能未定义"<<endl;Sleep();}
void REV(UserList &L)
{cerr<<"功能未定义"<<endl;Sleep();}
void SEE(UserList &L)
{
cout<<"表:"<<endl;
for(int i=;i<L.getN();i++)
L.display(i);
cout<<endl;
system("pause");
} int main()
{
UserList L;
// User admin("0","admin","admin");
// L.Add(admin);
bool flag=true;
while(flag)
{
switch(showMain())
{
case :flag=false;break;
case :ADD(L);break;
case :DEL(L);break;
case :REV(L);break;
case :SEE(L);break;
default:break;
}
}
Sleep();
return ;
}

Demo9.1.cpp

/*UserList.h*/

 #include <fstream>
#include "User.h"
using namespace std; class UserList
{
protected:
User *List;
int N,nMax;
string FileName;
public:
UserList(/*string Fn=""*/)
{
List=new User[];
N=;
nMax=;
// FileName=Fn;
FileName="D:\\#\\Users.dat";
readFile();
}
//
bool readFile()
{
ifstream fin(FileName.c_str(),ios::binary);
if(!fin)
return false;
fin.seekg(,ios::end);
int FileLen=fin.tellg(),len=sizeof(User);
fin.seekg(,ios::beg);
fin.read((char *)List,(N = FileLen<nMax*len?FileLen/len:nMax)*len);
fin.close();
/*
printf("*%d*",N);
for(int i=0;i<N;i++)
display(i);
cout<<endl;
*/
return true;
}
int Add(User u)
{
if(N<nMax)
{
List[N]=u;
ofstream fout(FileName.c_str(),ios::app|ios::binary);
int len=sizeof(User);
fout.seekp((N)*len);
fout.write((char *)&List[N],len);
fout.close(); N++;
return N-;
}//'else-重分配内存'或'使用vector容器'解决数据溢出
return -;
}
void idFind(string id)
{
}
void nameFind(string name)
{
}
void display(int i)
{cout<<"ID:"<<List[i].id<<endl<<"Name:"<<List[i].name<<endl<<"Password:"<<List[i].password<<endl;}
int getN()
{return N;}
};

UserList.h

/*User.h*/

 #include <iostream>
#include <string>
using namespace std; class User
{
friend class UserList;
protected:
string id;
string name;
string password;
public:
User(string id="",string name="",string password=""):id(id),name(name),password(password)
{}
};

User.h

后序慢慢补充

C++二进制文件读写的更多相关文章

  1. [转载:]Fortran 二进制文件读写

    一些朋友总是咨询关于二进制文件的读写和转化.这里就我自己的理解说一说. 一).一般问题 二进制文件与我们通常使用的文本文件储存方式有根本的不同.这样的不同很难用言语表达,自己亲自看一看,理解起来会容易 ...

  2. JAVA核心技术I---JAVA基础知识(二进制文件读写和zip文件读写)

    一:二进制文件读写 (一)写文件 –先创建文件,写入数据,关闭文件 –FileOutputStream, BufferedOutputStream,DataOutputStream –DataOutp ...

  3. Qt 学习之路 2(36):二进制文件读写

    Qt 学习之路 2(36):二进制文件读写 豆子 2013年1月6日 Qt 学习之路 2 20条评论 在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice ...

  4. Qt 二进制文件读写(使用“魔术数字”)

    今天开始进入 Qt 的另一个部分:文件读写,也就是 IO.文件读写在很多应用程序中都是需要的.Qt 通过 QIODevice 提供了IO的抽象,这种设备(device)具有读写字节块的能力.常用的IO ...

  5. Qt 学习之路:二进制文件读写

    在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的 ...

  6. Qt 学习 之 二进制文件读写

    在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的 ...

  7. 8.7 C++二进制文件读写操作

    参考:http://www.weixueyuan.net/view/6413.html 总结: 二进制文件的读写稍微麻烦一些,对二进制文件的读写同样需要打开文件和关闭文件,打开和关闭方式与文本文件相同 ...

  8. VB二进制文件读写

    数组存取 存数组 Private Sub Command2_Click() Dim fileNumber As Integer Dim S9 As String Dim k As Integer Di ...

  9. C++ 输入输出流 文本文件 二进制文件读写

    文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件. 二进制文件(不能显示内容,节 ...

随机推荐

  1. jquery 获取所有父元素

    最终结果: 代码: <!DOCTYPE html> <html> <head> <style> b, span, p, html body { padd ...

  2. unity3d IO操作

             前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写.当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位 ...

  3. java-04类和对象课堂练习

    1.请运行并输入以下代码,得到什么结果 public class Test { public static void main(String[] args){ Foo obj1=new Foo(); ...

  4. hdu2188 Check Corners

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. 五、python沉淀之路--字典

    一. 1.根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],222) print(v) {': 222} 2.根据key 获取值,key不存在时,报错:get方 ...

  6. stack容器

    一.stack特性 stack是一种先进后出(first in last out,FILO)的数据结构,它只有一个出口,stack只允许在栈顶新增元素,移除元素,获得顶端元素,但是除了顶端之外,其他地 ...

  7. Unity Shader 创建程序纹理贴图

    创建一个脚本 附加到一个游戏体上 using UnityEngine;using System.Collections; public class ProceduralTexture : MonoBe ...

  8. MyEclipse安装jbpm插件

    介绍如何在MyEclipse8.6里安装jbpm插件. 工具/原料 MyEclipse8.6 jbpm-4.4.rar 方法/步骤 1 下载jbpm包并解压 下载最新的jbpm包,本文以jbpm4.4 ...

  9. Azure上Linux VM误配防火墙的恢复方法

    在实际运维中,防火墙把自己挡在机器外面的情况会时有发生.如何快速的恢复对运维人员是很重要的. 本文将介绍如何用Azure Extension实现不通过ssh对VM进行操作的方法. 之前写过一遍Blog ...

  10. n年的一次聚会

    今日聚会有a,b,b1,c,d 五人一起吃饭. 先谈谈各自的变化吧. a 毕业之后,他爸给他买了一个京a的牌照,然后出印度留学,然后回到北京,现在算一个中层领导,不过比较忙,刚刚聚餐完毕就立马回去加班 ...