scanf和cin的区别
笔试的时候经常遇到突然string s;cin>>s;
有的时候编译会错误,不知道为什么。
今天在练习枚举类型的时候,也遇到这样⼀个问题。
enum weekday{Monday,Tuesday} day;
cin>>day;//报错
scanf("%d",&day);//正常
周纯洁的书上也都是⽤scanf;看样⼦scanf和printf不能随便丢弃啊。毕竟是标准输⼊输出流,没有缓存区
scanf是格式化输⼊,printf是格式化输出。
printf怎么格式化输出cin是输⼊流,cout是输出流。效率稍低,但书写简便。
格式化输出效率⽐较⾼,但是写代码⿇烦。
流输出操作效率稍低,但书写简便。
cout之所以效率低,正如⼀楼所说,是先把要输出的东西存⼊缓冲区,再输出,导致效率降低。
缓冲区⽐较抽象,举个例⼦吧:
曾经就遇到过这样的情况(类似的),
int i;
cout<<'a';
cin>>i;
cout<<'b';
运⾏结果什么都没看到输出,输⼊⼀个整型⽐如3再按回车后ab同时显⽰出来了。
但是这样的情况并不是经常发⽣,是在⼀些⽐较⼤型的⼯程中偶尔出现,原因是字符a先到了缓冲区,但是没输出,等输⼊了i,b进⼊
缓冲区后再⼀并输出的。
流输⼊也是差不多的。
关于C++中⽤iostream好还是stdio.h⽐较好
这个问得的确不好回答了。。
iostream.h和stdio.h是C++的两个头⽂件,⾥⾯是对于⼀些类,操作符,函数的定义,头⽂件本⾝应该没有好坏之分吧~~————————————————————————————————————————————————————————
⼜查了⼀下,最新的G++,cin已经⽐scanf快了,ACM如果scanf超时的话可以⽤G++提交⼀下试⼀下,呵呵,不过,我以后还是打算⽼⽼实实的⽤scanf。。cin的实时性较差,因为它使⽤了缓冲区,⼀般情况下满了才刷新的。
对于字符:cin的输⼊忽略空格和回车。scanf("%c",&i)等价于i = getchar(),换⾏符和回车都会被读⼊。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论