以下为本人大一时阅读《C++ Primer Plus》中关于文件处理章节所做的笔记
文件和流:
每个文件都以一个文件结束符(end–of-file maker)
当打开一个文件时,一个对象便被建立,并且将一个流关联到这个对象上
在C++中执行一个文件处理必须包含头文件<iostream>和<fstream>。
对于一个ofstream对象,文件打开模式可以是ios::out(默认)——向一个文件输出数据,或者是ios::app——将数据输出到文件的结尾(不改变在文件中原有的任何数据)。使用模式ios::out打开已存在的文件时,文件会被截顶(truncated),即所有存在于文件汇总的数据都将被丢弃。如果这个文件不存在,则ofstream会利用这个文件名新建一个文件。
上述代码创建了一个名为outClientFile的ofstream对象,与打开用来输出的文件clients.txt相关联。
以下代码等同于上述代码:
if(!outClientFile) |
outClientFile<<a<<‘ ‘是将内容输入到文件当中
以上语句隐式调用了cin的成员函数运算符void*,将流转换为指针对流进行检测,当failbit和badbit位都没有为cin置位时,这个条件一直是true。当遇到文件结束符时,failbit位被设置。
关闭文件:
main函数结束时将隐式地调用outClientFile的析构函数,关闭client.txt文件。也可以通过语句中调用成员函数close来显式地关闭ofstream对象:
同ofstream对象一样,创建一个ifstream对象时也可以不打开一个特定的文件,因为一个文件可以在之后与它关联。
用条件语句!inClientFile来判断文件是否被成功打开
从文件中读取:
(其实不难理解,就是把cin换成inClientFile,由键盘输入改为由文件输入)
每个istream对象都有一个get指针来指出文件中下一个输入的字节号
每个ostream对象都有一个put指针来指出文件中下一个输出的字节号
同样,ios::cur表示相对于当前流的位置进行定位,ios::end表示相对于流的结尾进行定位。
文件定位指针是一个整数值,这个值说明了文件开始位置到当前位置的字节数(也可以称为文件开始位置的偏移量)
同样的操作可以使用ostream的成员函数seekp来实现。成员函数tellg和tellp分别用来返回当前的get和put指针的位置。
以下语句将get文件定位指针的值赋给long型变量location
reinterpret_cast运算符可以把某种类型的指针强制转换为其他无关类型。例如:
outFile<<number; |
或者
write函数中的第一个参数是指向一个字节的指针,从这个位置开始,write输出到它的第二个参数指定数目的字节到文件当中
多种文件打开模式可以通过用( | )将单独的打开模式组合起来:
以上述方式打开credit.dat,可以保证将记录写入文件中而不是擦除文件后再进行创建
上述语句将put文件定位指针到(client.getAccountNumber()-1)*sizeof(ClientData)处。因为账户在1-100之间,所以计算时-1,对于记录1,文件定位指针被设为0。
原文地址:https://blog.csdn.net/QQ1149646297/article/details/122532265
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35004.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!