ITPub博客

首页 > Linux操作系统 > Linux操作系统 > fstream实用例子

fstream实用例子

原创 Linux操作系统 作者:lihuiitpub 时间:2009-08-21 18:00:16 0 删除 编辑
由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,所以它在fstream.h头文件中是没有像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象,我们要以文件作为设备向文件输出信息(也就是向文件写数据),那么就应该使用ofstream类。
  ofstream类的默认构造函数原形为:
  ofstream::ofstream(const char *filename,int mode = ios::out,int penprot = filebuf::openprot);
    • filename:  要打开的文件名
    • mode:    要打开文件的方式
    • prot:    打开文件的属性
  其中mode和openprot这两个参数的可选项表见下表:
mode属性表
ios::app以追加的方式打开文件
ios::ate文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in文件以输入方式打开
ios::out文件以输出方式打开
ios::trunc如果文件存在,把文件长度设为0
  可以用“或”把以上属性连接起来,如ios::out|ios::binary。
openprot属性表
属性含义
0普通文件,打开访问
1只读文件
2隐含文件
4系统文件
  可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。
实例代码如下:
#include >
using namespace std;

int main()
o
fstream myfile("c:\\1.txt",ios::out|ios::trunc,0);
myfile<<"中国软件开发实验室"<网址:"<<"www.cndev-lab.com";

system("pause");
}
  文件使用完后可以使用close成员函数关闭文件。
  ios::app为追加模式,在使用追加模式的时候同时进行文件状态的判断是一个比较好的习惯。
  示例如下:
#include
#include >
using namespace std;
int main()
o
fstream myfile("c:\\1.txt",ios::app,0);
if(!myfile)//或者写成myfile.fail()

cout<<"文件打开失败,目标文件状态可能为只读!";
system("pause");


myfile<<"中国软件开发实验室"<网址:"<<"www.cndev-lab.com"<
}
  在定义ifstream和ofstream类对象的时候,我们也可以不指定文件。以后可以通过成员函数open()显式的把一个文件连接到一个类对象上。
  例如:
#include
#include >
using namespace std;
int main()
o

myfile.open("c:\\1.txt",ios::out|ios::app,0);
if(!myfile)//或者写成myfile.fail()

cout<<"文件创建失败,磁盘不可写或者文件为只读!";
system("pause");


myfile<<"中国软件开发实验室"<网址:"<<"www.cndev-lab.com"<
}
  下面我们来看一下是如何利用ifstream类对象,将文件中的数据读取出来,然后再输出到标准设备中的例子。
  代码如下:
#include
#include >
#include
using namespace std;
int main()
i

myfile.open("c:\\1.txt",ios::in,0);
if(!myfile)

cout<<"文件读错误";
system("pause");


char ch;

while(myfile.get(ch))
c

cout.put(ch);//cout<

myfile.close();
system("
pause");
}
  上例中,我们利用成员函数get(),逐一的读取文件中的有效字符,再利用put()成员函数,将文件中的数据通过循环逐一输出到标准设备(屏幕)上, get()成员函数会在文件读到默尾的时候返回假值,所以我们可以利用它的这个特性作为while循环的终止条件,我们同时也在上例中引入了C++风格的字符串类型string,在循环读取的时候逐一保存到content中,要使用string类型,必须包含string.h的头文件。
我们在简单介绍过ofstream类和ifstream类后,我们再来看一下fstream类,fstream类是由iostream派生而来,fstream类对象可以同对文件进行读写操作。
  示例代码如下:
#include
#include >
using namespace std;
int main()
f

myfile.open("c:\\1.txt",ios::out|ios::app,0);
if(!myfile)

cout<<"文件写错误,文件属性可能为只读!"<
system("pause");


myfile<<"中国软件开发实验室"<网址:
"<<"www.cndev-lab.com"<

myfile.open("c:\\1.txt",ios::in,0);
if(!myfile)

cout<<"文件读错误,文件可能丢失!"<
system("pause");


char ch;
while(myfile.get(ch))
c


system("pause");
}
  由于fstream类可以对文件同时进行读写操作,所以对它的对象进行初始话的时候一定要显式的指定mode和openprot参数。


{ 
        myfile.close() 

{ 
        { 
                exit(1); 
    } 
        myfile.close(); 

{ 
fstream myfile; 
        { 
                exit(1); 
    } 
        myfile.close(); 
{ 
fstream myfile; 
        { 
                exit(1); 
    } 
        string content; 
        { 
ontent+=ch; 
        } 
        cout<

{ 
stream myfile; 
        { 
                exit(1); 
    } 
        myfile.close(); 
        
        { 
                exit(1); 
    } 
        { 
out.put(ch); 
        } 
   myfile.close(); 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16856446/viewspace-612894/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-19

  • 博文量
    113
  • 访问量
    191014