c++中的文件操作的底层操作:
文件操作属于一种I/O,它并不是c/c++语言的组成部分,是通过标准的I/O函数库来实现的。
操作系统眼中,设备也是文件,例如:
键盘是字符设备文件,磁盘是块设备文件等。
内存中的任何对象都可以看做是由一些字节序列组成的实体,计算机并不知道某个对象在实际应用中代表的含义,所有的对象都是内存空间和值。
读写文件的操作:
当程序员将内存中的字符串对象或者二进制对象写入到磁盘中时,计算机只是把它们的内存映像,就是值复制到磁盘文件中。
从磁盘文件中读取数据到内存中时,不论字符串数据还是二进制数据,读到的数据的含义完全取决于程序员如何解释,即将该数据赋值给内存中的何种类型的内存对象。
使用计算机将字符串文件读成二进制文件在技术上是没什么问题的,但在应用上这些数据会出现在其不该出现的位置和呈现不该有的排列顺序,导致数据错误,引发应用的运行错误。
文件数据固定时因解释不同而效果不同
因此任何对象和文件只有与具体的应用相关联才有意义,数据是用来向应用进程服务的,否则数据就只是单纯的字节序列,因此,并没有某种固定的“文件记录”,任何有意义的文件格式都是由应用领域决定的。
c/c++中,文件操作通过与名为“流”的对象关联而进行。
流的意思是字节流,当我们打开一个文件时