c++初学者使用文件流需要了解的一些坑(持续更新)
发布日期:2021-05-07 00:22:10 浏览次数:41 分类:原创文章

本文共 485 字,大约阅读时间需要 1 分钟。

字符读取篇

一:“>>” 与 get()的区别

(1)>>操作符会忽略前面的空白符和换行符,但不会越过后面的换行符和空白符。
(2)get()方法不会略过任何符号。

二,利用peek()判断读取完毕
 该调用形式为cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。

其功能是从输入流中读取一个字符 但该字符并未从输入流中删除  若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front 而如果cin.get()则相当于栈的成员函数pop。
  比如
  
使用该方法读取文件

ifstream fin("文件名",ios::in);while(!fin.eof()){   }

最后一行空行也会进入循环,导致读取错误。
因此可以利用peek()方法来避免这个问题:

ifstream fin("文件名",ios::in);while(!fin.eof()&&fin.peek()!=EOF){   }

参考博文:

上一篇:Excel中配置VBA的工作环境
下一篇:在c++使用文件流(初学者必看)

发表评论

最新留言

不错!
[***.144.177.141]2025年03月22日 20时28分45秒