C++文件操作函数详解

C++通过以下几个类支持文件的输入输出


(1) ofstream:写操作,输出文件类;

(2) ifstream:读操作,输入文件类;

(3) fstream:可同时读写的文件类。

1. open函数:打开文件

函数原型:void open(const char*filename,int mode,int access);

参数说明:filename:  要打开的文件名
mode:    要打开文件的方式
access:   打开文件的属性

打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:
ios::app:   以追加的方式打开文件
ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in:    文件以输入方式打开
ios::out:   文件以输出方式打开
ios::nocreate: 不建立文件,所以文件不存在时打开失败 
ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc:  如果文件存在,把文件长度设为0
  可以用“或”把以上属性连接起来,如ios::out|ios::binary
打开文件的属性取值是:
0:普通文件,打开访问
1:只读文件
2:隐含文件
4:系统文件
例如:以二进制输入方式打开文件c:\config.sys
  fstreamfile1;
  file1.open("c:\\config.sys",ios::binary|ios::in,0);

ofstream file;
file.open ("example.bin", ios::out |ios::app | ios::binary);

2. close函数

函数原型:void close()

3. 二进制文件(Binary files)

在二进制文件中,使用<< 和>>,以及函数(如getline)来操作符输入和输出数据,没有什么实际意义,虽然它们是符合语法的。

文件流包括两个为顺序读写数据特殊设计的成员函数:write 和 read。第一个函数 (write) 是ostream 的一个成员函数,都是被ofstream所继承。而read 是istream 的一个成员函数,被ifstream 所继承。类 fstream 的对象同时拥有这两个函数。它们的原型是:

write ( char *buffer, streamsize size );
read ( char * buffer, streamsize size );

这里 buffer 是一块内存的地址,用来存储或读出数据。参数size 是一个整数值,表示要从缓存(buffer)中读出或写入的字符数。

// reading binary file  
    #include <iostream>  
    #include <fstream.h>  
    const char * filename = "example.txt";  
    int main () {  
        char * buffer;  
        long size;  
        ifstream file (filename, ios::in|ios::binary|ios::ate);  
        size = file.tellg();  
        file.seekg (0, ios::beg);  
        buffer = new char [size];  
        file.read (buffer, size);  
        file.close();  
        cout << "the complete file is in a buffer";  
        delete[] buffer;  
        return 0;  
    }  

写文件举例:

// writing on a text file  
#include <fiostream.h>  
  
int main () {  
    ofstream examplefile ("example.txt");  
    if (examplefile.is_open()) {  
        examplefile << "This is a line.\n";  
        examplefile << "This is another line.\n";  
        examplefile.close();  
    }  
    return 0;  
}  


读文件举例:

// reading a text file  
   #include <iostream.h>  
   #include <fstream.h>  
   #include <stdlib.h>  
     
   int main () {  
       char buffer[256];  
       ifstream examplefile ("example.txt");  
       if (! examplefile.is_open())  
       { cout << "Error opening file"; exit (1); }  
       while (! examplefile.eof() ) {  
           examplefile.getline (buffer,100);  
           cout << buffer << endl;  
       }  
       return 0;  
   }  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值