C++ IO的一些注意点
读入这个坑一直以来都深受其麻烦,把遇到一些注意点记一下吧。
1.getchar读入
以前练线段树的时候做到Acwing#246 Interval GCD(原题在CodeHunter上,人懒就在Acwing上交了),怎么调也调不过去,样例和手造的数据统统没有问题,当时甚至怀疑数据出问题了拿人家题解交了一发,发现过了然后特别自闭,后来整了好久才发现是读入的锅,实测的数据可能没有给的样例那样整齐有序,把
type=getchar();
改成
do type=getchar(); while(type!='C'&&type!='Q');
然后就过了2333。
调代码期间收获了4*Segmentation Fault,10*Wrong Answer,1*Time Limit Exceeded,现在看着都害怕。
getchar读入时一定要while判断一下读进了什么东西。
2.cin去同步
上次模拟赛读入图快,cin去同步+getchar()读字符串,然后我就错失了一次绝佳的AK的机会。。
本地里跑得可好了,结果成绩出来获得了爆零的好成绩,Linux上连样例都跑不过,赛后把去同步删掉结果就AC了。
去网上了解了一下,istream本身读入时是和cstdio共用一个缓冲区的,输入的数据先进入缓冲区,然后两者都从中读入数据,而当加入
ios::sync_with_stdio(false);
的时候,iostream不再和cstdio同步使用同一个缓冲区,cin读完以后剩下的\n\t和空格都留在istream的缓冲区里,当你再调用cstdio的读入函数时,cstdio的缓冲区内没有数据,这时就会出现错误。所以去同步以后千万不能把两个库的函数混用,当然,这时快读也不能用了。
当时模拟赛竟然还有数据返回Dangerous Syscalls,这冲突也是严重啊。
3.快读read()调用
这也是一个奇怪的坑,不过这种在调样例的时候一般是能发现的

如果直接将读入结果作为实参传到函数里,那实际函数得到的参数是和读入顺序相反的,不大清楚具体是什么原因,应该和c++内部函数的机制有关吧。
快读最好先将数据保存到变量再处理。
C++ IO的一些注意点的更多相关文章
- VS2015编译GEOS
下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
- Performance Monitor4:监控SQL Server的IO性能
SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
随机推荐
- C# File.Exists 判断系统文件,警惕32位和64位的差异
今天在调试一个Winform程序,使用File.Exists 判断一个已经存在的驱动文件,程序一直返回false.因为驱动文件属于系统目录,心想难道是权限不够导致的?然后用管理员身份运行软件,依然返回 ...
- Centos 7下编译安装Apache
(1)下载apr.apr-util.httpd源码包 百度云下载地址:https://pan.baidu.com/s/1HyW_9XTLhhhf5j_IuNCQsQ 提取码:pg4d (2)安装编译工 ...
- 干货 | 这可能全网最好的BatchNorm详解
文章来自:公众号[机器学习炼丹术].求关注~ 其实关于BN层,我在之前的文章"梯度爆炸"那一篇中已经涉及到了,但是鉴于面试经历中多次问道这个,这里再做一个更加全面的讲解. Inte ...
- bootstrap-treeview 研究一下
一直以来都是拿来主义,现在正好有空,也正好用到,准备好好研究下bootstrap-treeview. 实现目标:可搜索,可复选选中的权限控制菜单项. 研究失败 转 jstree
- PHP acosh() 函数
实例 返回不同数的反双曲余弦: <?phpecho(acosh(7) . "<br>");echo(acosh(56) . "<br>&qu ...
- PHP strtolower() 函数
实例 把所有字符转换为小写: <?php高佣联盟 www.cgewang.comecho strtolower("Hello WORLD.");?> 定义和用法 str ...
- 创建githup远程库并关联
第一种方法:远程new仓库时直接勾选初始化仓库,然后克隆到本地即可(注:本地对应层不可再初始化仓库git init).克隆下来的仓库已经与远程库建立了管理git removte 第二种方法:本地下面有 ...
- ElasticSearch添加索引
1. 编写索引内容 节点解释: settings:配置信息 "number_of_replicas": 0 不需要备份(单节点的ElasticSearch使用) "ma ...
- static关键字设计原理
语法只是表象,原理才是关键!!! 灵魂static关键字 Java规定:方法只能由对象来调用. 换句话来说,在面向对象的思维下,方法与对象存在一种强耦合. 方法在没有对象的情况下无法调用,于是上帝派来 ...
- 还分不清 Cookie、Session、Token、JWT?一篇文章讲清楚
还分不清 Cookie.Session.Token.JWT?一篇文章讲清楚 转载来源 公众号:前端加加 作者:秋天不落叶 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证 ...