Skip to main content

文件IO 文件读写

头文件已包含在iostream

打开文件

  fstream fp;  //实例化文件操作对象
  fp.open("fileName",openmode); //以openmode方式打开fileNmae文件

ifstream和ofstram特用于输入/输出

  ifstream in;  //读取流对象实例化
  in.open("fileName");  //打开要读取的文件,打开方式默认为ios::in
  in.open("fileName",openmode);  //重载,以自定义打开方式打开文件

  ofstream out;  //输出流对象实例化
  out.open("fileName");  //打开要输出的文件,打开方式默认为ios::out
  out.open("fileName",openmode);  //重载,以自定义打开方式打开文件

  //或者在实例化时直接打开文件
  ifstream in("fileName");
  ifstream in("fileName",openmode);//重载
  
  ofstream out("fileName");
  ofstream out("fileName",openmode);//重载

in和out的.open()方法在打开文件失败时in和out的值False

openMode 描述
ios::app 追加到文件末尾
ios::ate 文件打开后定位到文件末尾
ios::in 读取,ifstream的默认打开方式
ios::out 写入,ofstream的默认打开方式
ios::trunc 如果文件已经存在,则清空文件后写入数据
ios::binary 打开二进制文件
ios::nocreate 如果文件不存在,不要创建文件
ios::noreplece 如果文件已经存在,则不要覆盖里面的内容(返回False)

使用多个openmode时以 | 隔开

读取和输出

C++推荐使用流(stream)方式进行IO操作

  //读取,此示例逐一读取in中的字符并打印到控制台
  char c;
  while(in >> c){
    cout<<c;
  }

  //写入
  string s = "mokemore"
  out << s;

关闭

  fp.close();
  in.close();
  out.close();

文件位置指针

// 定位到 fp 的第 n 个字节
fp.seekg( n );
 
// 把文件的读指针从 fp 当前位置向后移 n 个字节
fp.seekg( n, ios::cur );
 
// 把文件的读指针从 fp 末尾往回移 n 个字节
fp.seekg( n, ios::end );
 
// 定位到 fp 的末尾
fp.seekg( 0, ios::end );
标识 位置信息
ios::beg 文件开始位置
ios::cur 文件当前位置
ios::end 文件末尾