当前位置:编程学习 > C/C++ >>

c++编程文件操作问题

文件里面有多项纪录,怎么删除其中的一项,物理删除。
假设文件内容很大。不用把其他部分读入内存的方法。就是直接把一块内容删除的方法
追问:?什么意思?
感觉好像是在问我问题啊
答案:
c++中你可以设计成链表的结点来存储你所在文件的内容,如需删除或者添加之类的操作
只需删除或添加结点..
例如在图书管理系统里面,需要用文件(这里是Txt格式)来存储读者的信息,可以这样设计
定义类library....省略
void Library::SaveReader()
{
ofile.open("readers.txt",ios::out);
if(!ofile)
{
cout<<"读者文件保存失败"<<endl;
return ;
}
List<Reader>::const_iterator iter=readers.begin();
ofile<<readers._Size<<endl;
for(; iter!=readers.end();++iter)
{
iter->SaveData(ofile);
}
ofile.close();
}
void Library::LoadReader()
{
ifile.open("readers.txt",ios::in);
if(!ifile)
{
cout<<"读者文件打开失败"<<endl;
return ;
}
int num;
ifile>>num;
for(int i=0;i<num;i++)
{
Reader rd;
rd.LoadData(ifile);
readers.push_back(rd);
}
ifile.close();
}
void Reader::SaveData(ofstream &ofile) const
{
ofile<<reader_id<<" "<<reader_name<<" "<<reader_password<<" "<<reader_position<<" "<<reader_phone<<endl;
}
void Reader::LoadData(ifstream &ifile)
{
ifile>>reader_id>>reader_name>>reader_password>>reader_position>>reader_phone;
}
用链表的方式解决。。。
C++编程问题 (文件的相关操作) 20

标签: c++ 编程, c++, 文件

(2)编写一个程序,实现以下功能:
1)输入一系列的数据(学号、姓名、成绩)存放在文件stud.dat中;
2)从该文件中读出这些数据并显示出来。
2、实验目的和要求
(1)掌握磁盘文件的操作
(2)使用write函数完成将内存中的一块东西写道一个输出文件流中,格式为:流对象.write((char *))&类对象名,sizeof(类对象名))
(3)用read函数完成从一个文件读字节到指定的内存中,格式为:流对象.read((char *))&类对象名,sizeof(类对象名))


请写出完整的原代码,如果有相关文件啊什么的请说明,谢谢

你想用文件操作来代替数据库操作啊?这样效率很低的。如果非要这样,可以把要删除的记录打上标记。Windodow其实就是这样。如果记录多,还是考虑用数据库吧。
大文件操作用映像
参考一下CMapFile.需要参考一下你的文件格式
直接“物理删除”文件的一部分而不读取其它部分,是不可以的,除非这部分是文件某处之后的所有内容,就是说这部分不在中间。否则,无论如何都是要移动数据的。移动数据的话,比较好的办法是使用内存文件映射,FileMaping。但是如果你有比较大量的操作,效率也不是很高。最好的办法是这样,在你的数据结构里面,加上一个字段用来描述是不是被删除,当你要删除一个数据,只做上标记,就是说先“逻辑删除”,然后,每隔一段时间或者满足一定条件(比如程序退出时),创建一个专门的线程用来处理所有记录的“物理删除”。

上一个:用C++编程来实现
下一个:C++编程 定义一个学生类

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,