【C++数据结构与算法】学习随笔二
来源:互联网 发布:手机淘宝怎么改差评 编辑:程序博客网 时间:2024/06/05 15:04
本文主要介绍使用fstream流输入和输出txt文件的方法及相关注意事项。
1.使用fstream写入到txt文件中
使用fstream将相关信息写入到txt文件中,因为fstream既能读又能写,所以在打开txt文件时需要指明对其进行的操作。
例如:fstream writefile;writefile.open("a.txt",ios::out|ios::app)//除了使用open方式打开外也可以使用构造函数方式打开txt文件,fstream writefile("a.txt",ios::out|ios::app);
关于文件的打开方式说明如下:
in:以读方式打开
out:以写方式打开
app:每次写操作均定位到文件末尾(若想每次写数据都在上一条数据之后写则需要设置该方式,否则每次写数据都将覆盖之前的数据)
ate:打开文件后立即定位到文件末尾(若想每次读数据都按照从头到尾读出txt文件中全部内容,则不定义该模式,若定义该模式只能读出最后一行数据)
trunc:截断文件(只有在写操作的时候才用,没用过)
binary:以二进制方式进行IO(以二进制形式进行文件的读写操作,默认是以文本形式)
在打开文件之后(默认为文件存在打开,文件不存在新建一个),可以使用writefile.write()或writefile<<"" 写入文件,切记在用完后一定要记得关闭流,writefile.close();
代码示例:
fstream out;out.open("./liwei.txt",ios::out|ios::app);pr.writeToFile(out);void Personal::writeToFile(fstream& out) {out.write(SSN,9);out.write(name,nameLen);out.write(city,cityLen);out.write(reinterpret_cast<const char*>(&year),sizeof(int));out.write(reinterpret_cast<const char*>(&salary),sizeof(long));}
2.使用fstream从txt文件中读
使用fstream读文件的时候,后面不要加ios::ate 否则只能读取最后一行数据不能全部读取文件中数据;例如:fstream readfile;readfile.open("a.txt",ios::in) //同样可以利用构造函数打开,这里不再赘述。
读取文件位置操作:
seekg(绝对位置); //绝对移动,通过seekg(绝对位置)函数可以设置从文件哪个位置开始读,streampos为位置类型名 示例:streampos curpos; seekg(curpos);
seekg(偏移量,相对位置); //相对操作,偏移量可正可负,0表示不偏移,正表示在相对位置往后移动偏移量,负数表示往前移动偏移量;
相对位置有三种情况:ios::beg ios::cur ios::end seekg(0,ios::end)//表示定位到文件尾 不偏移,seekg(5,ios::beg)//定位到文件头往后偏移5字节
tellg(); //返回当前指针位置
seekp(绝对位置); //绝对移动
seekp(偏移量,相对位置); //相对操作
tellp(); //返回当前指针位置
ios::cur = 1 //相对于当前位置
ios::end = 2 //相对于文件尾
读取文件代码示例:
pr.curpos=pr.initpos=input_file.tellg();
while (input_file.peek()!=EOF)//!input_file.eof()此方法最后一行数据会重复输出两次{//pr.readFromFile(input_file);此方法也行pr.curpos=pr.readFromFilePos(input_file,pr.curpos,pr.initpos);cout<<pr<<endl;}
void Personal::readFromFile(fstream& in) {in.read(SSN,9);in.read(name,nameLen);in.read(city,cityLen);in.read(reinterpret_cast<char*>(&year),sizeof(int));in.read(reinterpret_cast<char*>(&salary),sizeof(long));}streampos Personal::readFromFilePos(fstream& readfile,streampos cur,streampos init){if (cur!=init){readfile.seekg(cur);}readfile.read(SSN,9);readfile.read(name,nameLen);readfile.read(city,cityLen);readfile.read(reinterpret_cast<char*>(&year),sizeof(int));readfile.read(reinterpret_cast<char*>(&salary),sizeof(long));return readfile.tellg();}
- 【C++数据结构与算法】学习随笔二
- 【C++数据结构与算法】学习随笔一
- 算法与数据结构学习二
- 数据结构与算法分析学习笔记二-栈的C语言实现
- 数据结构与算法分析 随笔2
- 数据结构与算法二
- 数据结构与算法二
- C++,java算法与数据结构(二)--慕课网笔记
- 算法预备学习--C++,java算法与数据结构
- 《数据结构与算法分析》学习笔记二:树
- 学习笔记之数据结构与算法(二)
- 数据结构与算法学习笔记(二)反转链表
- 数据结构与算法分析 学习笔记(二)
- 用Python 学习数据结构与算法 二、插入排序
- 《数据结构与算法分析java语言描述》学习笔记二
- python学习笔记(二)数据结构与算法
- 学习Javascript数据结构与算法系列笔记(二):栈
- 学习JavaScript数据结构与算法(二)——栈
- C3P0连接池配置
- 顶级登录页面html
- 前端框架Ext学习之框架搭建
- 基础图论
- ASP .NET – TextBox 控件
- 【C++数据结构与算法】学习随笔二
- vue分页组件编写
- Shell 从日志文件中选择时间段内的日志输出到另一个文件
- iOS之NSProcessInfo的使用
- java基础-----集合 set
- 2015多校第8场 HDU 5385 贪心,最小生成树
- win8升级win10后的windows.old怎么删除
- FTP服务搭建
- 设计模式之原型模式