posts - 34,comments - 2,trackbacks - 0

  和C语言不同,C++对文件的操作有自己的方法。
        C++对文件的操作主要是通过两个类(ofstream---向文件中写入数据。ifstream----从文件中读取数据),通过指定类中的变量取值来达到对文件的操作。
       ofstream类的构造函数(有好几个,这个用的最多)ofstream::ofstream
ofstream( const char* szName, int nMode = ios::out, int nProt = filebuf::openprot )

szName:指定将要打开的文件名

nMode:指定打开的方式,有以下几种取值

 

--------------------------------------------------------------------------------

ios::app   数据始终添加在文件的末尾,文件的指针不移动。比如输入的是123,在文件的末尾出现的是321(先将1插入文件尾,接下来插入2,2在1的前面....)


ios::ate   数据添加在文件的末尾,文件指针会移动,比如输入123,在文件的末尾就出现123.


ios::in   如果指定了此模式,则文件的内容不会被截断


ios::out   打开文件,用于输出,可以用于所有的ofstream对象


ios::trunc   如果文件已经存在,那么文件的内容将被清空


ios::nocreate   打开文件的时候不创建文件,意思是如果文件不存在,则函数失败


ios::noreplace   不覆盖文件,意思是如果文件存在,则函数调用失败。


ios::binary   以二进制方式打开文件,默认是以文本方式打开


--------------------------------------------------------------------------------
nProt:指定文件保护规格说明,有以下几种取值
filebuf::sh_compat   兼容共享模式filebuf::openprot和此种方式一样
filebuf::sh_none   独占模式,不共享
filebuf::sh_read    共享,只读方式
filebuf::sh_write   共享,可以对文件执行写入操作

从文件中读取数据是通过ifstream的对象进行的,其构造函数如下
ifstream::ifstream
ifstream( const char* szName, int nMode = ios::in, int nProt = filebuf::openprot );各参数的意义同上

对于C++的文件操作,需要先构建ofstream和ifstream类的对象,然后通过该对象的成员函数进行文件的读写操作(例如write和read函数)

例子:

#include
#include
#include
using namespace std;

int main()
{
    //打开文件,如果文件不存在则创建文件,然后向文件内写入数据
    ofstream outFile("2.txt",ios::app);
    //将数据写入文件
    outFile.write("c++对文件的操作方法",strlen("c++对文件的操作方法"));
    outFile.close();

    //在文件的末尾写入数据,先将文件的指针移到末尾
    outFile.open("2.txt",ios::app);
    outFile.seekp(0,ios::end);
    outFile.write(",重复写一次:c++对文件的操作方法",strlen(",重复写一次:c++对文件的操作方法"));
    outFile.close();

    //读取文件的内容,并将其显示在屏幕上
    ifstream inFile;
    inFile.open("2.txt",ios::in);
    char buffer[100];
    inFile.read(buffer,99);
    buffer[99]='';
    for(int i=0;i<100;i++)
        cout<<buffer[i];
    inFile.close();

    return 0;
}

posted on 2011-11-30 20:40 Yu_ 阅读(429) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理