C++ 学习之文件的读写

来源:互联网 发布:无线智能网络摄像机 编辑:程序博客网 时间:2024/05/17 05:50

对于C++文件的读写,个人认为关键之处在于牢记“文件流对象和文件的绑定是否正常”

要想读写文件,必须先定义文件的流对象,并且将定义的流对象与想要处理的文件进行绑定。对文件进行绑定,少不了涉及文件名称。

在C++中,文件名作为实参要求是C风格的字符串,而不是C++中的string类对象。通常的处理方法是用直接初始化的方法,括号中是C风格字符串;或者是将文件名赋值给一个string类对象,然后再调用c_str()成员函数进行转化。

例如:

string filename = "d://f1.txt";

fstream File(filename.c_str());

fstream File1;

File1.open("d://f1.txt");或者是File1.open(filename.c_str());

通过上面的方法,就已经将流对象与想要处理的文件绑定起来了。

C++中对文件的处理,时刻要记得检测流对象的状态,因为它直接影响你的绑定是否成功。

通常有几个管用手法在编程时是提倡的:

1.检测文件是否打开成功:

if(!文件流对象)

cerr<<"errors"<<endl;

2.文件操作完毕后,使用close和clear成员函数关闭文件和清除流的错误状态

用以上两个操作主要有如下原因:

1)C++中文件流对象一旦打开,就一直与所绑定的文件关联,如果想要利用此流对象与其他文件绑定,需要先关闭当前的文件,然后在打开另一个文件;2)一般读取文件时,当到达文件结束符或者出现错误,流对象此时都会处于错误状态,仅仅关闭文件不能是流对象恢复正常,需要对其使用clear操作,使流对象有效。

下面是一个例子:在d盘有两个文件命名为f1.txt和f2.txt。文件里面简单随便写了几句话。使用visual studio写了一个例子。

程序:

 

结果

如果在处理第二个文件之前,不进行close和clear操作,编译能通过,但是所得结果为:

因为在第一个文件处理后,流处于不可用状态,一个不可用的流,对其进行绑定,就是空谈!

原创粉丝点击