stdio vs iostream
当我在互联网上搜索这两个库的区别时,大家都说<iostream>
是C ++的标准I / O库, <cstdio>
是C的。我的教授说cin>>
和cout<<
好的功能,如果我们使用cin>>
很多时候我们的应用程序肯定会崩溃。 他还表示, stdio
提供比iostream
快3倍的输入和输出。 不过,我更喜欢使用iostream
因为它更方便,而且我不知道我的教授是否正确。
那么你建议我使用什么?
使用iostream
不应该让你的程序崩溃。 它可能会很慢,但这只是因为它试图与stdio
进行互操作。 该同步可以关闭1。 iostream
是获得输入的惯用C ++方法,在使用C ++时,我建议在大多数情况下将它用于stdio
函数。
1使用std::ios::sync_with_stdio(false);
在C ++中使用流和在C中使用stdio.h是的,数据流有点慢,但是这些毫秒数呢? 用户输入很少是应用程序的瓶颈。
如果流正确使用,并且您的编译器/运行时库可以,您的应用程序不会崩溃。
但是,如果你有使用cstdio
函数的好的,可解释的理由,那么在C ++中使用它们也是完全合法的。
除非I / O的性能非常重要,否则请使用任何能够使程序最清晰(最容易阅读)的程序。
在我编写的大量程序中,只有少数程序需要特别处理“I / O速度有多快” - 而std::stream
函数的大部分问题都必须与输入的实际解析[以及与stdio同步] - 如果你正在阅读,比如说浮点数,将很难编写你自己的[接受std::stream
允许的全部格式]的版本。
如果I / O性能真的很重要,那么使用std::stream::read
和std::stream::write
可能是解决方案,但在大多数情况下,最好的性能来自使用不可移植的mmap
和MapViewOfFile
接口,将文件内容直接从文件系统映射到应用程序的虚拟内存。 这节省了复制数据处理所花费的时间,并且使其更快一些。
上一篇: stdio vs iostream