C++二进制文件读写
简单二进制文件读写,多文件
/*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++二进制文件读写的更多相关文章
- [转载:]Fortran 二进制文件读写
一些朋友总是咨询关于二进制文件的读写和转化.这里就我自己的理解说一说. 一).一般问题 二进制文件与我们通常使用的文本文件储存方式有根本的不同.这样的不同很难用言语表达,自己亲自看一看,理解起来会容易 ...
- JAVA核心技术I---JAVA基础知识(二进制文件读写和zip文件读写)
一:二进制文件读写 (一)写文件 –先创建文件,写入数据,关闭文件 –FileOutputStream, BufferedOutputStream,DataOutputStream –DataOutp ...
- Qt 学习之路 2(36):二进制文件读写
Qt 学习之路 2(36):二进制文件读写 豆子 2013年1月6日 Qt 学习之路 2 20条评论 在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice ...
- Qt 二进制文件读写(使用“魔术数字”)
今天开始进入 Qt 的另一个部分:文件读写,也就是 IO.文件读写在很多应用程序中都是需要的.Qt 通过 QIODevice 提供了IO的抽象,这种设备(device)具有读写字节块的能力.常用的IO ...
- Qt 学习之路:二进制文件读写
在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的 ...
- Qt 学习 之 二进制文件读写
在上一章中,我们介绍了有关QFile和QFileInfo两个类的使用.我们提到,QIODevice提供了read().readLine()等基本的操作.同时,Qt 还提供了更高一级的操作:用于二进制的 ...
- 8.7 C++二进制文件读写操作
参考:http://www.weixueyuan.net/view/6413.html 总结: 二进制文件的读写稍微麻烦一些,对二进制文件的读写同样需要打开文件和关闭文件,打开和关闭方式与文本文件相同 ...
- VB二进制文件读写
数组存取 存数组 Private Sub Command2_Click() Dim fileNumber As Integer Dim S9 As String Dim k As Integer Di ...
- C++ 输入输出流 文本文件 二进制文件读写
文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件. 二进制文件(不能显示内容,节 ...
随机推荐
- onclick调用函数的几种!
()是个操作,表示执行displayDate方法,你把displayDate方法执行完的返回值赋给onclick能对吗?onclick接受的是Function类型的变量,要么用匿名的方法赋值就是doc ...
- 关于overflow:hidden
(本文只针对hidden这个值的用处进行阐述) 关于overflow:hidden;很多人都知道他是溢出隐藏的一个属性,但是并不是很多人知道它的一些神奇的地方!首先先讲一下众所周知的溢出隐藏吧! 溢出 ...
- python3之编码
这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件 ...
- 运行flask程序
Command Line Interface Installing Flask installs the flask script, a Click command line interface, i ...
- MSSQL Join的使用
假设我们有下面两张表.表A在左边,表B在右边.我们给它们各四条记录. id name id name -- ---- -- ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pi ...
- Oracle 数据库迁移到MySQL (kettle,navicate,sql developer等工具
Oracle 数据库迁移到MySQL (kettle,navicate,sql developer等工具 1 kettle --第一次使用kettle玩迁移,有什么不足之处和建议,请大家指正和建议. ...
- 深入浅出 消息队列 ActiveMQ------增强版
本小节我们将讲解Apache开源下的ActiveMQ,而ActiveMQ是JMS的一个具体实现.JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于 ...
- [置顶]
自己写一个简单通用的Makefile
转自:http://blog.csdn.net/u011913612/article/details/52102241 一.makefile的作用 Makefile是用于自动编译和链接的,一个工程有很 ...
- 开发环境入门 linux基础 (部分) 归档 压缩 Vi编译器 系统分区
归档 压缩 Vi编译器 系统分区 1.使用cat命令进行文件的纵向合并 1) 使用cat命令实现文件的纵向合并: a) 例如:将用户信息数据库文件和组信息数据库文件 ...
- node install error
错误:Unexpected end of JSON input while parsing near.... 解决办法: npm cache clean --force