14

我在网上搜索这两个库的区别,大家都说<iostream>是C++的标准I/O库,<cstdio>是C的。我教授说,cin>>不是cout<<很好的函数,如果我们cin>>多次使用我们的应用程序肯定会碰撞。他还说,它stdio提供的输入和输出速度比iostream. 但是,我更喜欢使用,iostream因为它更方便,而且我不知道我的教授是否正确。

那你建议我用什么?

4

4 回答 4

17

使用iostream不应该让你的程序崩溃。它可能很慢,但这只是因为它试图与stdio. 可以关闭同步1iostream是获取输入的惯用 C++ 方式,在使用 C++ 时,我建议stdio在大多数情况下使用它而不是函数。

1使用std::ios::sync_with_stdio(false);

于 2013-06-25T06:02:43.413 回答
9

使用 C++ 中的流和 C 中的 stdio.h。是的,流有点慢,但是这些毫秒数吗?用户输入很少是应用程序的瓶颈。

如果流使用得当,并且你的编译器/运行时库没问题,你的应用程序就不会崩溃。

但是,如果你有充分的、可解释的理由来使用cstdio函数,那么在 C++ 中使用它们也是完全合法的。

于 2013-06-25T06:03:55.710 回答
3

除非 I/O 的性能真的很重要,否则请使用使您的程序最清晰(最容易阅读)的任何一种。

在我编写的大量程序中,只有少数需要对“I/O 有多快”进行特殊处理——而std::stream函数的大部分问题都与输入的实际解析有关 [以及与 stdio 同步] - 如果您正在阅读,比如说,浮点数,将很难编写您自己的版本 [接受允许的全部格式std::stream]。

如果 I/O 性能真的很重要,那么使用std::stream::readandstd::stream::write可能是解决方案,但在大多数情况下,最佳性能来自使用将文件内容直接从文件系统“映射”到虚拟内存的不可移植mmap和接口MapViewOfFile应用程序。这节省了复制数据处理所需的数量,并使其速度更快一些。

于 2013-06-25T08:21:55.303 回答
1

iostreams 库可能比较低级别的 stdio 库慢。Streams 在幕后做了很多事情——类型转换、本地化、异常处理等。

于 2013-06-25T06:03:12.417 回答