IO 的进化史

cin和cout

刚开始学的时候,老师叫我们用 cin 和 cout

大概是因为这最简单吧

cin>>x;

cout<<x

scanf和printf

学到函数了,老师开始让我们用 scanf 和 printf

也许是这样更方便吧

scanf("%d",&x);

printf("%d",x);

gc和pc

现在,普通的输入不再满足需求

getchar 和 putchar 开始被我们使用

inline int read(){
int x=0,f=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar())
if(c=='-') f=-1;
for(;c>'/'&&c<':';c=getchar())
x=x*10+c-'0';
return x*f;
}
inline void write(int x){
if(x<0) x=-x,putchar('-');
if(x>9) write(x/10);
putchar(x%10+'0');
}
优化

随着我们对位运算的了解,产生了两个优化

inline int read(){
int x=0,f=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar())
if(c=='-') f=-1;
for(;c>'/'&&c<':';c=getchar())
x=(x<<1)+(x<<3)+(c^48);
return x*f;
}

fread和fwrite

听一些大佬说有一题的正解被卡成了 60 分,用了这个才对

于是我自己学习了一下,读入大概就是一次读取一段文件内容到数组中,然后用一个指针获取字符

输出就是把字符存在一个数组中,到了要输出的长度就一次输出

inline char gc(){
static char buf[100000],*S=buf,*T=buf;
return S==T&&(T=(S=buf)+fread(buf,1,100000,stdin),S==T)?EOF:*S++;
}
inline int read(){
static char c=nc();register int f=1,x=0;
for(;c>'9'||c<'0';c=nc()) c==45?f=-1:1;
for(;c>'/'&&c<':';c=nc()) x=(x<<3)+(x<<1)+(c^48);
return x*f;
}
char fwt[100000],*ohed=fwt;
const char *otal=ohed+100000;
inline void pc(char ch){
if(ohed==otal) fwrite(fwt,1,100000,stdout),ohed=fwt;
*ohed++=ch;
}
inline void write(int x){
if(x<0) x=-x,pc('\n');
if(x>9) write(x/10);
pc(x%10+'0');
}
fwrite(fwt,1,ohed-fwt,stdout);

注意:这种方法仅用于文件输入输出,测试要添加 freopen



The End

最新文章

  1. python之ATM
  2. HDU 1513 最长子序列
  3. 通过mongodb客户端samus代码研究解决查询慢问题
  4. 【转】virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法
  5. 条款38 通过复合塑膜出has-a或&amp;quot;依据某物实现&amp;quot;
  6. hadoop部署错误
  7. WPF实现多值绑定特性以及多值转换
  8. 10 分钟学会Linux常用 bash命令
  9. 垂直居中小记 line-height table vertical-align:middle
  10. 201521123014 《Java程序设计》第14周学习总结
  11. 解决VC6下调不出MSDN的问题!
  12. Download all Apple open source OS X files at once
  13. tomcat 进程莫名停止
  14. IaaS,PaaS,SaaS 的区别
  15. scikit_learn lasso详解
  16. (转)jira7.2安装、中文及破解
  17. Kayleigh O&#39;Connor - I Won&#39;t Be There
  18. LOJ-10106(有向图欧拉回路的判断)
  19. nagios系列(一)centos6.5环境部署nagios服务端
  20. Windows 操作系统与内核版本号

热门文章

  1. FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发
  2. 如何在云服务器上安装vim(bash: vim :command not found)
  3. LC-76
  4. 帝国CMS怎样删除清空数据库记录?
  5. linux添加磁盘及分区挂载
  6. js刷新页面window.location.reload()
  7. maven jar包冲突问题
  8. uniapp中添加vant组件
  9. Edu Cf Round 105 (Div. 2) B. Berland Crossword 1.读懂题, 2. 思维
  10. node.js - mysql