转自于:http://www.vckbase.com/document/viewdoc/?id=1355
C++中提供了<fstream>,该库提供了高级的自动控制机制。其具体使用方法如下。
1、创建文件流
输入文件流ifstream支持重载的>>操作符,输出文件流ofstream支持重载的<<操作符。下面的程序创建一个ifstream对象 file,并将该对象中的每一个单字显示在屏幕上:
#include<iostream>
#include<string>
#include<fstream>
#include<cstdlib>
using namespace std;
int main()
{
string s;
cout<<"enter file name:";
cin>>s;
ifstream f(s.c_str());
if(!f) exit(-1);
while(f>>s)
cout<<s<<"\n";
}
fstream对象只接受常量字符串作为文件名。我们不必显示检查EOF,因为重载操作符>>会自动处理。我们也不必显示关闭此文件,因为西沟函数会为我们做这件事。
关于文件的打开模式
如果不显示指定打开模式,fstream类将使用默认值,即ifstream默认以读方式打开文件并将文件指针置为文件的开头。ofstream则默认以写方式打开文件并将文件指针置为文件开头。
<fstream>定义的打开模式和文件属性:
ios::app //从后面添加
ios::ate //打开并找到文件尾
ios::binary //二进制模式打开
ios::in //只读打开
ios::out //写打开
ios::trunc //将文件截为0长度
可使用模式的组合。
如:fstream logfile("Database.dat",ios::in|ios::out);
2、设置文件的位置
可以调用seekp()函数,将文件指针指向该文件的某个偏移位置,该函数以字节为单位。tellp()可以报告新位置。
另可以用下面的常量重新定位文件。
ios::beg
ios::cur
ios::end
3、读写数据
如:fstream logfile("log.dat");
logfile<<teim(0)<<"danny"<<"\n";
logfile.seekp(ios::beg);
logfile>>login>>user;