• CC++ 文件操作


    在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作:
       1、基于C++的文件操作;
       2、基于C的文件操作;

    于C++的文件操作

      在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O。stream这个类有两个重要的运算符:

     (1)插入器(<<):向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"WriteStdout"<<'' ''; 就表示把字符串"WriteStdout"和换行字符('' '')输出到标准输出流。

     (2)析取器(>>):从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x; 就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
      在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
    一、打开文件

      在fstream类中,有一个成员函数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:系统文件      

      可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。      

      例如:以二进制输入方式打开文件config.conf      

        fstream file1;      

        file1.open("config.conf",ios::binary|ios::in,0);     

      如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:    

        file1.open("config.conf");<=> file1.open("config.conf",ios::in|ios::out,0);     

      另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:    

        fstreamfile1("config.conf");    

      特别提出的是,fstream有两个子类:ifstream(input file stream)和ofstream(outpu filestream)       

        ifstreamfile2("pdos.def");  //以输入方式打开文件       

        ofstreamfile3("x.123");  //以输出方式打开文件        

      ifstream默认以输入方式io::in打开文件,而ofstream默认以输出io::out方式打开文件。    

        注:file2.good() 判断对象可不可用。正常返回0,否则返回非0.    

      所以,在实际应用中,根据需要的不同,选择不同的类来定义:      

        如果想以输入方式打开,就用ifstream来定义;输入文件流      

        如果想以输出方式打开,就用ofstream来定义;输出文件流      

        如果想以输入/输出方式来打开,就用fstream来定义。

    二、关闭文件
        打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:file1.close();就把file1相连的文件关闭。

    三、读写文件

  • 相关阅读:
    mingW与cygwin
    Ruby on Rails 和 J2EE:两者能否共存?
    嵌入式Linux学习笔记(一) 启航、计划和内核模块初步体验
    嵌入式Linux学习笔记(六) 上位机QT界面实现和通讯实现
    嵌入式Linux问题总结(一) Ubuntu常用命令和编译问题解决方法
    嵌入式Linux学习笔记(五) 通讯协议制定和下位机代码实现
    嵌入式Linux学习笔记(四) 设备树和UART驱动开发
    嵌入式Linux学习笔记(三) 字符型设备驱动--LED的驱动开发
    嵌入式Linux学习笔记(二) 交叉编译环境和Linux系统编译、下载
    记录嵌入式面试的流程
  • 原文地址:https://www.cnblogs.com/xlpsky/p/6133208.html
Copyright © 2020-2023  润新知