需求1:想利用同一个ifstream输入流对象a进行反复输出
问题1:输入流对象在a在输出一次后就没反应了。
解决办法:使用a.clear()函数更新a对象的状态
如果忽略 clear 的调用,则循环只能读入第一个文件。要了解其原因,就
需要考虑在循环中发生了什么:首先打开指定的文件。假设打开成功,则读取文
件直到文件结束或者出现其他错误条件为止。在这个点上,input 处于错误状态。
如果在关闭(close)该流前没有调用 clear 清除流的状态,接着在 input 上
做的任何输入运算都会失败。一旦关闭该文件,再打开 下一个文件时,在内层
while 循环上读 input 仍然会失败——毕竟最后一次对流的读操作到达了文件
结束符,事实上该文件结束符对应的是另一个与本文件无关的其他文件。
如果程序员需要重用文件流读写多个文件,必须在读另一个文
件之前调用 clear 清除该流的状态。
需求2:想在文件的任意位置读取字符画进行输出到控制台
问题2:无
解决方法:利用ifstream的文件定位指针seekg函数。
文件定位指针 读指针.
为了顺序地从文件中取得数据,程序一般从文件起始位置开始连续地读取所有数据,直到找到所需要的数据为止。在程序的执行过程中,有可能需要顺序地读取文件好几遍(从件起位置开始)。ifsteam和 ostream都提供了成员函数来重定文件定位指针(文件中下一个被读取或写人的字节号)。在isteam中&#