对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。......
2023-11-18
文件流可以分为3类:输入文件流、输出文件流以及I/O文件流,相应地必须将文件流声明为ifstream、ofstream以及fstream类的对象。例如:
声明了文件流对象之后,可使用函数open()打开文件。open()的函数原型为:
void open(const char*filename,intmode,int prot=filebuf∷openprot);
其中,filename是文件名字,它可包含路径说明。mode指出文件打开的模式,它对文件的操作影响重大,mode的取值如下:
◇ios∷in 读方式打开文件。将这种模式应用于ifstream,这是文件输入流的默认方式。
◇ios∷out 写方式打开文件。将这种模式应用于ofstream,若文件存在,则先删除文件中数据,然后再写入数据;若文件不存在,则自动建立文件。这是文件输出流的默认方式。
◇ios∷ate 打开一个已存在文件(输入或输出),并把文件指针指向文件末尾。
◇ios∷app 写方式打开文件,仅用于在文件末尾添加数据。
◇ios∷trunc 如果文件存在,则清除原文件内容。
◇ios∷nocreate 如果文件不存在,则打开失败,不创建新文件。
◇ios∷noreplace 如果文件存在,则打开失败。
◇ios∷binary 以二进制方式打开文件。默认的打开方式为文本文件。
对于ifstream文件流,mode的默认值为ios∷in;对于ofstream文件流,mode的默认值为ios∷out。
参数prot确定文件的访问方式,取值如下:
◇0 普通文件,一般情况下,该访问方式为默认值。
◇1 只读文件(www.chuimin.cn)
◇2 隐含文件
◇4 系统文件
与其他状态标志一样,参数mode的符号常量可以用位或运算符“|”组合在一起,如ios∷in|ios∷binary表示以只读方式打开二进制文件。例如:
ifstream ifile;
ifile.open("d:\\vc\\test.txt",ios∷ate)
表示以文本文件形式打开d:\vc目录下的test.txt文件,文件指针定位到文件尾,准备进行读文件操作。而操作:
ofstream ofile;
ofile.open("d:\\vc\\test.txt",ios∷binary)
表示以二进制文件形式打开d:\vc目录下的test.txt文件,准备进行写文件操作。
注意:文件的读写是相对程序(程序加载在内存中)而言的,文件的读操作是把文件数据送入内存,也称为文件输入,文件的写操作是把内存中的数据送到文件中保存,也称为文件输出。
除了调用open()成员函数外,ifstream、ofstream和fstream这3类流的构造函数也可以打开文件,其参数与open()函数相同。例如:
ifstream ifile("d:\\vc\\test.txt");//自动调用ifstream类的构造函数
如果使用构造函数或open()打开文件失败,对应的文件流对象返回一个非NULL值。可以利用这一点检测文件打开操作是否成功,如果不成功则做特殊处理。这种异常处理模式一般格式如下:
继续正常的文件操作
打开的文件使用完毕后,必须使用close()函数将其关闭,其作用是将缓冲区的内容刷新并撤消流与文件之间的连接。当流对象的生存期结束后,相应的析构函数也会将文件关闭。
有关C++程序设计基础教程的文章
对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。......
2023-11-18
C程序中,处理文件数据的过程可以分为3个主要步骤:①打开要处理的文件;②按某种方式处理文件;③关闭文件。表7.1文件模式及意义续表打开或建立指定文件成功时,fopen函数将返回一个文件类型变量的地址,该地址应赋值给FILE类型指针变量;若打开或建立文件失败,fopen函数返回一个空指针值。......
2023-11-20
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。......
2023-11-07
C++的标准输入/输出流库用于数据的输入/输出,用于输入/输出的流库包含在头文件iostream.h中。表1.4常用的输入/输出流操纵符显示常数使用cout可以显示字符串和数字,并可显示多个值。因此,用户输入数据时要避免输入的数据超出指定变量的值域。程序的执行结果如下:注意:使用cin输入一个字符串时,其中不能含有空格,否则,cin认为输入结束。......
2023-11-07
多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。按照绑定进行阶段的不同,可以分为两种不同的绑定方法:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。有些多态类型,其同名操作的具体对象能够在编译、连接阶段确定,通过静态绑定解决,比如重载、强制和参数多态。包含多态操作对象的确定就是通过动态绑定完成的。分析以下程序的执行结果。......
2023-11-07
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
相关推荐