1.以二进制的方式存储就是以0101的形式存储
第一部分 --- 写文件(out)
2.流对象就是我们通过输出流类 -- ofstream 创建的一个对象,通过这个对象我们就能对文件进行写的操作了
3.文件的打开方式有如下这么几个:
1.文件路径分为相对路径和绝对路径 --- 相对路径就是指 文件名 . 文件类型 ,当只有文件名的时候,编译器会在源文件所处的文件路径下创建一个对应的文件然后进行读/写
绝对路径就是加上了文件路径的 文件名 . 文件类型 --- 在其左边加上了所属的盘和文件迭代路径
第二部分 --- 读文件(in)
1.打开文件和写文件有一点不同,就是打开文件不仅要执行打开操作,同时还要判断打开是否成功,判断方式是调用读文件的流对象的is_open()接口,调用这个接口之后如果文件打开成功它就会返回一个ture,否则返回一个false(这个函数的返回类型是布尔类型)
2.读数据的四种方式
通过右移运算符从文件中将数据读取到数组中
第二种方式就是就是通过读文件的流对象的接口getline()来读文件 --- getline:以行的形式读取文件中的数据直到将文件读取完毕 --- 且每行都是以字符串的形式读取
要注意的是读文件其实涉及到两个方面:1.读取文件中的数据 2.将读取到的数据进行存储
所以调用getline()接口时,我们还需要传两个参数:(存储数据的首个内存空间的地址(或者是指向这个内存空间的指针,对于数组而言这个地址就是首元素的地址),用来存储数据的总内存空间的大小(单位是字节))
第三种使用了:
1.string类型,通过string创建的类型可以承接字符串 --- 使用string类型的时候要包含头文件 <string>
2.getline()全局函数 -- 注意这里是全局函数而不是流对象的成员函数,调用这个全局函数还需要我们传入两个参数 --- getline(读文件的流对象,承接文件中数据的string类型的变量)
1.第四种方式用到了读取文件的流对象的get()接口,这个接口第一次调用的返回值是文件中的第一个字符,第二次调用就是文件中的第二个字符...
2.文件的结束标志是 EOF -- 这也是一个字符
第四种读取方式就是一个字符一个字符的读取,直到读取到文件结束标志后停止
第三部分 --- 用二进制的方式写文件
1.进行文件操作的时候最好用字符数组而不是字符串类型,避免出现错误
以二进制的方式写文件(二者组合),中间用位或操作符隔开
write中有两个参数:1.写入的数据是什么 2.写入的数据有多大
write函数的第一个参数是一个指针,这个指针指向的是我们要写入的数据,注意这里用了强制类型转换,因为write函数的第一个形参规定参数的类型必须得是 cosnt char* , 如果没有强制类型转换的话这个&p的类型就是 Person* 了
第二个就是我们要写入的数据的大小了
第四部分 --- 二进制方式读文件
buffer是以一个字符指针, 指向的是用来存储我们从文件中读取的数据的内存空间
1.注意我们在调用函数的时候,取好的地址要强制转换为 char* 的类型,不然的话就会出现类型不匹配的问题。