I/O流类库(二)

文件流

  • ofstream,由ostream派生而来,用于写文件
  • ifstream,有istream派生而来,用于读文件
  • fstream,由iostream派生而来,用于读写文件

文件的打开

  • 说明了流对象之后,可使用函数open()打开文件。文件的打开即是在流与文件之间建立一个连接
  • 函数原型

        void open(const  char* filename,
                  int  mode = ios::out, 
                  int  prot = _SH_DENYNO);   
    
  • 参数
    • filename:文件的名称,可以包含(绝对和相对)路径
    • mode:文件打开模式
    • prot:保护模式

几种判断文件流是否成功的方法

#include <iostream>
#include <fstream>
#include<cassert>

using namespace std;

int main(void)
{
    ofstream fout;
    fout.open("test.txt");
    if (fout.is_open())            //is_open()
        cout << "succ" << endl;
    else
        cout << "failed" << endl;

    if (fout.good())               //good()
        cout << "succ" << endl;
    else
        cout << "failed" << endl;

    if (fout)                      //fout
        cout << "succ" << endl;
    else
        cout << "failed" << endl;

    if (!fout)                     //!fout
        cout << "failed" << endl;
    else
        cout << "succ" << endl;
    assert(fout);                  //assert
    fout.close();
}

文件打开方式

I/O流类库(二)_第1张图片

保护模式

“拒绝”是拒绝其他进程
I/O流类库(二)_第2张图片

文件打开的几点说明

  • 文件打开也可以通过构造函数打开,例如:

     ofstream fout("out.txt",ios::out);
    
  • 文件的打开方法是可以为上述的一个枚举常量,也可以为多个枚举常量构成的按位或表达式
  • 使用open成员函数打开一个文件时,若由字符指针参数所指定的文件不存在,则建立该文件
  • 当打开方式中不含有ios::ate或ios::app选项时,则文件指针被自动移到文件的开始位置,即字节地址为0的位置。
  • 从效果上看ofstream指定out模式等同于指定了out和trunc模式
  • 默认情况下,fstream对象以in和out模式同时打开
  • 当文件同时以in和out打开时不会清空
  • 如果只使用out模式,而不指定in模式,则文件会清空现有数据
  • 如果同时指定了out和app,不会清空
  • 如果打开文件是指定了trunc模式,则无论是否同时指定了in模式,文件同样会被清空

你可能感兴趣的:(IO,库)