
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){ }
参考博文:
发表评论
最新留言
不错!
[***.144.177.141]2025年03月22日 20时28分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mybatis【6】-- Mybatis插入数据后自增id怎么获取?
2021-05-08
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
2021-05-08
Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?
2021-05-08
【实战问题】-- 缓存穿透,缓存击穿和缓存雪崩的区别以及解决方案
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
iOS13 关闭黑暗模式+状态栏显示问题解决方法
2021-05-08
oracle数据库默认是10次尝试失败后锁住用户
2021-05-08
zabbix系列之十——添加短信告警
2021-05-08
docker复制文件到宿主机
2021-05-08
unexpected status code 401
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08