|
|
|
|
| 《计算机二级C++考试辅导资料大全》之“ 第10章 C+ +流考点归纳”篇 |
|
| 作者:武汉SEO闵涛 文章来源:本站整理mintao.net 点击数5648 更新时间:2007/10/4 17:09:27 文章录入:mintao 责任编辑:mintao |
|
|
|
(char c):设置填充字符; 等价函数调用:io.fill(c) 函数返回此前设置的填充字符;如果只需要这个返回值,可不给参数。 9插入换行符 ●end1:插入换行符(即'\ n')并强制写缓,实现输出的回车换行(与格式标志无关); 等价函数调用:o.put(o.widen('\n'));o.flush() 10其他格式控制方式 (1)插入字符串结束符。 (2)输入输出数制状态的控制。 (3)逻辑常量输出方式的控制。 (4)前导空白字符处理方式的控制。 (5)缓冲区工作方式的控制。 (6)正数的符号表示方式的控制。 10.3 文件流 文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。ifstream是文件输入流类,ofstream是文件输出流类,fstream是文件输入输出流类。要利用这些类来定义文件流对象,必须在程序的开始部分包含如下的预处理命令和名字空间声明: #include using namespace std; 1文件流的建立 每个文件流都应当与一个打开的文件相联系。可以用两种不同的方式打开文件。 (1)在建立文件流对象的同时打开文件。 (2)先建立文件流对象,再在适当的时候打开文件。 2文件流的关闭 关闭文件流用成员函数close(),例如若fin是一个文件流对象,则可用下面的语句关闭: fin.close (); 如果程序没有用close()主动关闭文件,则在文件流对象退出其作用域时,被自动调用的析构函数会关闭该对象所联系的文件。但我们提倡在打开的文件不再需要时及时并主动地将之关闭,以便尽早释放所占用的系统资源并尽早将文件置于更安全的状态。 3文件流状态的判别 可以用文件流对象的下列成员函数来判别文件流的当前状态: is_open():判定流对象是否与一个打开的文件相联系,若是,返回true,否则返回false; good():刚进行的操作成功时返回true,否则返回false; fail():与good()相反,刚进行的操作失败时返回true,否则返回false; bad():如果进行了非法操作返回true,否则返回false; eof():进行输入操作时,若到达文件尾返回true,否则返回false. 也可以直接针对流对象进行判断。假定input是一流对象,则 if (! input)…等同于if(input.fail())… if (input)…等同于if(input.good())… 4文件流的定位 (1)文件位置与定位方式 流的位置以字节为单位,通常表示为一个长整数,用类形符号pos_type代表。C+ +流的位置有两种:输入(get)位置和输出(put)位置。输入流只有输入位置,流对象中标志这种位置的指针称为输入指针。输出流只有输出位置,流对象中标志这种位置的指针称为输出指针。输入输出流两种位置都有,因而同时具备输入指针和输出指针:这两个指针可以分别控制、互不干扰。对于文件流,这两种指针可统称文件指针。 每一次输入或输出都是从指针所指定的位置处开始的,指针在输入输出过程中不断移动,完成输入或输出 后即指向下一个需要输入或输出的位置。因此,在进行一般的输入输出操作时,指针总是向后(文件尾方向)移动。 也可以通过专门的定位操作操纵指针,而且既可以向后移动,也可以向前移动,见下面的说明。C+ +流的定位方式(也就是指针移动方式)有三种,被定义为ios_base::seek_dir中的一组枚举符号: ios_base::beg 相对于文件首 ios_base::cur 相对于当前位置(负数表示当前位置之前) ios_base::end 相对与文件尾 (2)输入定位 输入流对象中与输入定位有关的成员函数有: ●istream_type seekg(off_type off,ios_base ::seek_dir dir); 按方式dir将输入定位于相对位置off处,函数返回流对象本身的引用 ●pos_type tellg(); 返回当前的输入位置,即从流开始处到当前位置的字节数 ●bool eof()const; 判定输入流是否结束,结束时返回true,否则返回false。 (3)输出定位 在输出流对象中与输出定位有关的成员函数有: ●ostream_type& seekp( pos_type pos); (绝对定位)将输出流定位于绝对位置pos,函数返回流对象本身的引用 ● ostream_type& seekp(off_type off,ios_base ::seekdir dir); (相对定位)按方式dir将输出流定位于相对位置off处,函数返回流对象本身的引用 ●pos_type tellp(); 返回当前的输出位置(pos_type通常就是long),即从流开始处到当前位置的字节数。 5特殊的文件流:CON和PRN 以"CON"为文件名建立的输入流所联系的设备是键盘,可用于键盘输入;以"CON"为文件名建立的输出流所联系的设备是显示器,可用于显示输出。 6有格式输入输出 针对文件的格式化输入输出与针对标准设备cin和cout的输入输出十分相似,但仍有两点需要注意。 作为格式化输入输出,所操作的文件都是纯文本文件,因此可以用记事本或写字板等文本编辑器来准备这样的数据文件,以供应用程序输入处理;应用程序通过格式化输出所生成的数据文件也同样可以用记事本或写字板等文本编辑器来查看。 每一个作为格式化输入源的流对象(如cin或一个输入文件流)都有一个流结束标记,读到该标记即表明其后没有更多的数据了。可以用流的成员函数eof()来判断是否读到流结束标记。对于输入流对象cin,可以通过在键盘上打入Z来插入流结束标记,但在完成输入后,必须执行一次cin.clear();后,cin才能继续使用。 7无格式输入输出 对于无格式输入输出,数据的内部存储格式与外部存储格式完全相同。无格式输入输出很多情况下是针对二进制文件的,输入输出需要用read函数或write函数,因而要求文件是按ios_base::binary模式打开的。注意和不能用于按ios_base::binary打开的文件(二进制文件)的输入和输出。
上一页 [1] [2] |
|
|
|
|
|