和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++