我在网上搜索这两个库的区别,大家都说<iostream>
是C++的标准I/O库,<cstdio>
是C的。我教授说,cin>>
不是cout<<
很好的函数,如果我们cin>>
多次使用我们的应用程序肯定会碰撞。他还说,它stdio
提供的输入和输出速度比iostream
. 但是,我更喜欢使用,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
andstd::stream::write
可能是解决方案,但在大多数情况下,最佳性能来自使用将文件内容直接从文件系统“映射”到虚拟内存的不可移植mmap
和接口MapViewOfFile
应用程序。这节省了复制数据处理所需的数量,并使其速度更快一些。
iostreams 库可能比较低级别的 stdio 库慢。Streams 在幕后做了很多事情——类型转换、本地化、异常处理等。