C/C++ fstream

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_31437863/article/details/85314035
  1. <fstream>库包含了三个基本的类:ifstream, ofstream和fstream。这三个类分别代表一个输入文件,一个输出文件,以及一个输入输出文件。
  2. ofstream, ifstream, fstream
    1.  在头文件fstream中,在fstream类中,用open成员函数打开文件,实现类与文件的关联操作。
    2. void open (const char * filename, openmode mode);
      1. 对所属类进行用指定的参数进行特定的文件关联几种打开方式(mode):(这些方式可以用 '|' 组合起来)

ios::in

打开输入(读)文件

ios::out

打开输出(写)文件

ios::ate

初始位置为文件尾

ios::app

所有写入附加在文件末尾

ios::trunc

如果所操作的文件已经存在了,就先删除

ios::binary

以二进制打开

打开文件的属性(prot):(这些方式可以用'+'进行组合,这个参数可以省略不传)

0

普通文件,打开操作

1

只读文件

2

隐含文件

3

系统文件

    1. close():用来关闭文件,是文件重新变为可访问,对象流也可以打开其他文件了.
  • 判断文件状态
    1. is_open():文件是否正常打开
    2. bad():读写过程中是否出错(操作对象没有打开,写入的设备没有空间)
    3. fail():读写过程中是否出错(操作对象没有打开,写入的设备没有空间,格式错误--比如读入类型不匹配)
    4. eof():读文件到达文件末尾,返回true
    5. good():以上任何一个返回true,这个就返回false
  • 获得和设置流指针
    1. 对于所有的输入输出流都有至少一个指针,指向下一个要操作的位置
      1. ofstream put_point
      2. ifstream get_point
      3. fstream put_point和get_point
    2. 获取流指针位置
      1. 这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).
      2. tellg(): 返回输入流指针的位置(返回类型long)
      3. tellp(): 返回输出流指针的位置(返回类型long)
    3. - 设置指针位置
      1. 把文件的读写指针从postion位置 移动offset个字节
      2. seekg(streamoff offset,long  position):  设置输入流指针位置为第position个字符(文件首位置为开始位置)
      3. seekp(streamoff offset,long  position):  设置输出流指针到指定位置
        1. ios::beg // 文件开始位置
        2. ios::cur // 当前位置,例如: ios::cur+5
        3. ios::end // 文件尾
      4.  
    4. 缓存和同步
      1. 当我们对文件流进行操作的时候,它们与一个streambuf 类型的缓存(buffer)联系在一起。这个缓存(buffer)实际是一块内存空间,作为流(stream)和物理文件的媒介。例如,对于一个输出流, 每次成员函数put (写一个单个字符)被调用,这个字符不是直接被写入该输出流所对应的物理文件中的,而是首先被插入到该流的缓存(buffer)中。
      2. 当缓存被排放出来(flush)时,它里面的所有数据或者被写入物理媒质中(如果是一个输出流的话),或者简单的被抹掉(如果是一个输入流的话)。这个过程称为同步(synchronization),它会在以下任一情况下发生:

猜你喜欢

转载自blog.csdn.net/baidu_31437863/article/details/85314035