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

/*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. BRICH

    一.简介 Brich是典型的基于层次的聚类算法.最大的特点就是适合数据量特别大的数据集,处理速度很快,因为该算法扫描一遍数据集. 该算法是利用了一个树状结构来快速聚类,该结构类似平衡B+树.每一个叶子 ...

  2. python3 之初学者常犯的5个错误

    1. Creating a copy of dictionary or lists. Whenever you need to make a copy of a dictionary or list, ...

  3. 前端HTML5介绍

    1.为什么学习HTML5? 跨平台要求低 硬件要求低 flash之外的选择(尤其手机端) 2什么是HTML5? HTML是用来描述网页的一种语言 HTML指超文本标记语言 HTML不是变成语言,是一种 ...

  4. java代码equals方法

    package com.bc; public class Test_6 { // 我们知道java中的每个类都继承自Object类,equals是Object方法之一 String name; int ...

  5. java数组复制的几种常见用法

    1.1数组复制的几种常见用法 1.1.1System.arraycopy的用法 int[] src = {1,3,5,7,9,11,13,15,17}; int[] dest = {2,4,6,8,1 ...

  6. Oracle 文件

    参数文件 跟踪文件 告警文件 数据文件 临时文件 控制文件 重做日志文件 密码文件 闪回日志 dum文件 数据泵文件 1参数文件 Parameter file:告诉oracle实例在那里可以找到控制文 ...

  7. Oracle 下ASM磁盘总结

    Oracle 下ASM磁盘总结 文章转载: Oracle下创建ASM磁盘总结https://blog.csdn.net/okhymok/article/details/78791841?utm_sou ...

  8. delphi VCL组件同名继承

    当我们在扩展一个 vcl 组件功能的时候,既想保留IDE中能拖动大小与直接设置属性的功能,又想减少写创建与释放代码和安装扩展后新组件的麻烦,那么本文中的方法,就非常实用了. 以给TStringGrid ...

  9. CSS3图片以中心缩放,放大超出隐藏实现

    首页,重点是有一个包裹img标签的容器,这里我们给该容器设置一个class为selfScale <div class="selfScale"> <img sr=& ...

  10. 在发送intent启动activity之前判断是否有activity接收

    通过packagemanager()的queryIntentAActivities(intent,0)的返回list<ResolveInfo>长度来判断具体代码如下: PackageMan ...