scanf和cin

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf和cin相关的知识,希望对你有一定的参考价值。

C++中cin和scanf的速度差距有多大 以前做题的时候觉得没什么差距 今天做一个输出10000个数据的题的时候用cin老超时 用scanf一下就过了 谁能给我大概说一下 还有C++中用iostream好还是stdio.h比较好 谢谢了

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++的两个头文件,里面是对于一些类,操作符,函数的定义,头文件本身应该没有好坏之分吧~~

只是发展到C++,都比较提倡用iostream.h罢了,因为这样写代码简单。
参考技术A cin的实时性比较差
因为它使用了缓冲区
一般情况下满了才刷新

C++ 一般用iostream

cin和scanf的速度差别

好长时间没有遇到这种问题了,以前虽然知道scanf比cin快,但是没想到快这么多,见图。

50万的数据。

scanf输入:

cin输入:

网上说用std::ios::sync_with_stdio(false);可以优化。优化完的速度:

还和纯scanf差好多。

以上是关于scanf和cin的主要内容,如果未能解决你的问题,请参考以下文章

c++中scanf和cout有啥区别

scanf和cin的区别

scanf()和cin的区别,用scanf,则没有输出数据,为啥?

关于scanf的用法

scanf和cin

关于scanf和cin的问题