IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 14 chapter 文件处理(cpp大学教程)学习笔记 -> 正文阅读

[移动开发]14 chapter 文件处理(cpp大学教程)学习笔记

14.1 文件和流

文件

1、内存中数据的存储是临时的,而用文件存储的数据是永久的——文件被储存在辅助存储设备中,如硬盘、CD、DVD、闪存驱动器和磁带

特点

每个文件都以一个文件结束符或者以存储在操作系统维护、管理的数据结构中的一个特定字节数

文件处理模板

  • typedef ifstream是一个对basic_ifstream的特化,允许文件输入字符

  • typedef ofstream是一个对basic_ofstream的特化,允许文件输出字符

  • typedef fstream是一个对basic_fstream的特化,允许文件输入、输出字符

注意:该模板都是从basic_iostream\basic_istream\basic_ostream中“继承”而来,包含其所有的成员函数

14.2 创建顺序文件

打开一个文件

?ofstream outputFile("credit.dat", ios::out);
?if(!outputFile){cerr<<"File could not be opened";exit(EXIT_FAILURE);}

打开文件有两个参数:文件名和文件打开模式

文件名:若文件不存在,则自动创建该文件名的文件

文件打开模式ios::out——向一个文件输出数据:默认截顶,会自动清空文件里的数据重新输出

ofstream对象默认为ios::out文件打开模式

模式描述
ios::app将输出文件添加到文件尾,不截顶
ios::ate可以再文件任何位置输出数据,默认为文件尾
ios::in打开文件输入
ios::out打开文件输出,截顶
ios::trunc丢弃文件的内容
ios::binary打开一个文件进行二进制输入/输出

使用open打开一个文件

?ofstream outputFile;
?outputFile.open("credit.dat", ios::out);

14.3 从顺序文件中读取数据

?ifstream inFile("credit.dat", ios::in);
?if(!inFile){cerr<<"File coule not be opened";exit(EXIT_FAILURE);};

默认为输入打开模式,也可以使用open成员函数打开文件

文件定位指针

seekg()成员函数重定位下一个文件读入的字节号

seekp()成员函数重定位下一个文件输出的字节号

传递给重定位成员函数的第一个参数通常是一个long类型的整数

参数2作用
ios::beg从流的开始位置定位
ios::cur从流的当前位置进行定位
ios::end相对于流的结尾进行定位

tellg();tellp();用于高速下一个文件输入/输出的字节号

14.4 随机存取文件

输出和读取

  • 成员函数write()从文件中“put”文件定位指针的位置开始输出固定数目的字节到指定的流

  • 成员函数read()从文件“get”文件定位指针的位置开始读入固定数目的字节数据

成员函数write()输出字节数据

outputFile.write(reinterpret_cast<const char*>(&client), sizeof(ClientData));

write()函数将第一个参数作为一组字节数据,将内存中的对象看做const char*类型,表示指向一个字节的指针;第二个参数为输出的字节数

reinterpret_cast<>()运算符转换指针类型

作用:把某种类型强制转换为其他无关类型

注意:该转换是在编译阶段完成,不会改变指针所指对象的类型

string类成员函数copy()

?string string1 = "stringCopy";
?char string2[10];
?string1.copy(string2, 10);

成员函数copy()的两个参数:

第一个参数:将要复制赋值的string数组

第二个参数:要复制的字符个数

用二进制模式打开一个输出文件

?ofstream outputFile("credit.dat", ios::out|ios::binary);

通过运算符"|"可以组合多种打开模式

成员函数read()读取文件数据

inFile.read(reinterpret_cast<char*>(&client), sizeof(ClientData));

第一个参数:要求的参数类型为char *,需用强制类型转换

第二个参数:读取的字符数

判断是否读取到文件尾

?while(inFile && !inFile.eof()){};
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:13:48  更:2021-11-25 08:14:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:51:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码