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)中读出或写入的字符数。

[cpp] view plaincopyprint?
#include <fstream>  
#include <iostream>  
using namespace std;  
int main()  
{  
        const int SZ=100;  
        char buf[SZ];  
        {  
               ifstream in;  
               in.open("example.cpp",ios::in);  
               ofstream out;  
               out.open("example.out");  
               int j=1;  
               while(in.get(buf,SZ))  
               {  
                       in.get();  
                       cout<<buf<<endl;  
                       out<<j++<<":"<<buf<<endl;  
               }  
        }  
        ifstream in("example.out");  
        while(in.getline(buf,SZ))  
        {  
               char *cp=buf;  
               while(*cp!=':')  
               {  
                       ++cp;  
               }  
               cp+=2;  
               cout<<cp<<endl;  
        }  
        system("pause");  
        return 0;  
}

转载于:https://my.oschina.net/wange/blog/98421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值