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;
    }

  

C++操作文件举例

#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;
}


  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值