7.6.3  4个类模板

7.6.3 4个类模板

本小节简要介绍4个类模板。前面已经使用过这4个类模板,但并没有对它们的全部功能和全部成员函数进行透彻的讲解和说明。

1.类模板Basic_filebuf

类模板Basic_filebuf是从类Basic_streambuf派生而来,属于名称空间std内。此类包含了5个类型声明:

978-7-111-51399-5-Chapter07-150.jpg

此类模板还包含了一个构造函数和一个析构函数:

978-7-111-51399-5-Chapter07-151.jpg

此类模板的成员函数有3个:is_open()、open()和close()。其原型分别为:

978-7-111-51399-5-Chapter07-152.jpg

其中open()函数的返回值是指针类型。

此类还包括几个重载函数:showmanyc()、underflow()、uflow()、pbackfail()、overflow()、setbuf()、seekoff()、seekpos()、sync()和imbue()。

类Basic_filebuf使输入流和输出流同各自的文件关联起来。

is_open()函数用于判断文件是否被打开。如果文件打开成功,函数返回true;否则,函数返回false。

open()函数和close()实现文件或流的打开和关闭。

showmanyc()函数可以实现判断出输入流中有多少字符可以被读取。

underflow()函数在前面已经讲过。

uflow()函数从输入流中读取当前字符,并返回为整数值形式。

pbackfail()函数将字符放回输入流中。

overflow()函数前面已经讲过。

seekpos()函数使用绝对位置,随机访问文件。

seekoff()函数使用相对位置,随机访问文件。

sync()函数实现缓冲区和文件的同步。

imbue()函数默认是不做任何事情。

2.类模板Basic_ifstream

类模板Basic_ifstream是从类Basic_istream派生而来的。同样,此类模板包括5个类型声明、两个构造函数和5个成员函数。它们的声明形式及功能如下:

978-7-111-51399-5-Chapter07-153.jpg

两个构造函数的声明形式为:

978-7-111-51399-5-Chapter07-154.jpg

5个成员函数的作用为:

rdbuf()函数是获取流缓冲区的指针。

is_open()函数用于判断流是否被正确打开。

open()函数用于打开文件。

close()函数用于关闭文件和输入流之间的关联。

3.类模板Basic_ofstream

类模板Basic_ofstream是从类Basic_ostream派生而来的。同样,此类模板包括5个类型声明、两个构造函数和4个成员函数。它们的声明形式及功能如下:

978-7-111-51399-5-Chapter07-155.jpg

两个构造函数的声明形式为:

978-7-111-51399-5-Chapter07-156.jpg

4个成员函数的作用为:

rdbuf()函数是获取流缓冲区的指针。

is_open()函数用于判断是否正确打开文件。

open()函数用于打开文件,如果打开成功,将建立文件和流之间的关联。

close()函数用于关闭流和文件之间的关联。

4.类模板Basic_fstream

类模板Basic_fstream是从类Basic_iostream派生而来的。同样,此类模板包括5个类型声明、两个构造函数和4个成员函数。它们的声明形式及功能如下:

978-7-111-51399-5-Chapter07-157.jpg

两个构造函数的声明形式为:

978-7-111-51399-5-Chapter07-158.jpg

4个成员函数的作用为:

rdbuf()函数用于获取流缓冲区的指针。

is_open()函数用于判断是否正确打开文件。

open()函数用于打开文件,如果打开成功,将建立该文件和流之间的关联。

close()函数用于关闭流和文件之间的关联。