scanf和cin的区别

睡不着,难得失眠,其实也不是失眠,白天睡多了。忽然想起白天做的一道题目,有个小提示,输入要用scanf,当时不知道为什么,刚百度了下,废话少说。下面是百度知道里面的。

————————————————————————————————————————————————————

scanf是格式化输入,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(),换行符和回车都会被读入。




猜你喜欢

转载自blog.csdn.net/deng529828/article/details/6173655