码迷,mamicode.com
首页 > 其他好文 > 详细

cin 与 scanf 的不同

时间:2016-07-20 10:28:29      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

cin输入更方便:

首先,cin 是个C++类型对象,它的类型是basic_istream,scanf 是个不定参数的函数,
其次,cin 所属的类重载了 >> 运算符,使输入更简单了,比如 
double d; cin>>d;
而 scanf 不一样的,
double d;scanf("%lf",&d);
看起来麻烦一点。
另外,cin 也更安全,不会发生内存溢出。
char c; scanf("%lf",&c); //这时需要8个字节的空间,但只提供一个,内存溢出。
而 cin 也更安全
char c;cin>>c; //只输入字符,不会溢出

从底层上来说,C++ 的 cin 与 C语言的 scanf 都采用 stdin 作为输入源, 但cin和scanf 采用了不同的缓冲区,可以通过 ios 头文件里面的 sync_with_stdio () 函数设置缓冲区共享,使cin和scanf 共享缓冲区。
C++也可以改变输入源,但这样很复杂。
其实,C++对 stdin 进行了封装,用流和迭代器进行了转变了流的概念而已,而C的scanf直接操作 stdin而已

 

scanf 比 cin 更快,用cin输入超时是常有的事~

 

最新的G++,cin已经比scanf快了,在scanf超时的情况下可以尝试使用G++提交

对于字符:cin的输入忽略空格和回车

 

 

cin 与 scanf 的不同

标签:

原文地址:http://www.cnblogs.com/weiyuan/p/5687142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!