【问题标题】:What is the difference between iostream , stdio.h and conio.h header files in c++?c++ 中的 iostream 、 stdio.h 和 conio.h 头文件有什么区别?
【发布时间】:2016-09-20 11:25:49
【问题描述】:

我对所有这三个头文件感到困惑。我在 Balagurusamy for C++ 中读到所有这些文件都用于获取输入和输出。但是有什么区别。我知道我们使用 stdio.h 作为 scanf 和 printf cin和cout我们使用iostream。但是conio.h有什么用

【问题讨论】:

  • conio.h 的使用适用于停滞不前的教育工作者,他们曾在 1985 年参加过关于教授 C++ 的速成课程,并且从那时起就一直在利用它。真的,一切都在名义上。
  • @JoachimPileborg:附件 D 调用...
  • @samarthkejriwal 缺乏研究 - 在谷歌上 2 分钟就会找到我上面的链接
  • @JoachimPileborg:不想取出全局锁来读取语言环境可能是一个原因:-)
  • 关于超时问题,你用std::ios::sync_with_stdio(false);吗?不幸的是,如果 i/o 时间紧迫,这是您必须做的事情。

标签: c++ header-files


【解决方案1】:

stdio.h/cstdio - 标准 C 输入和输出,如 printfscanffprintf 等。 此 API 仅是一个 C API,基于无状态函数和结构,如 FILE,它们保持状态。通常在 C 项目中使用,在 C++ 中应避免使用。

iostream - 标准 C++ 输入和输出,包含 coutcincerr 等对象。与 C++ 流一起工作,这些流是管理 IO 的对象。 C++ 项目的默认 IO 选项。对于 C++ IO 流的某些方面存在批评,但 C++ IO-Streams 仍然是大多数项目的默认选择。

conio.h - 代表 "console input/output" ,这是一个仅 Windows 的标头,它为控制台 IO 操作提供 C 函数,例如 getchungetch 等。我看不到这个库的现代用途。

【讨论】:

  • conio.h 早于 windows,并且来自 MS-DOS - 由于向后兼容 MS-DOS,Windows 支持它。 cstdio 是一个 C++ 头文件,它(过于简单化)提供了来自 C 的 stdio.h 的函数,但是 [除了一些宏] 然后放在命名空间 std 中。
  • conio 直接与硬件对话,stdio 通过 STDIO 陷阱,因此它可以重定向到文件,通过管道到另一个程序,甚至到串行端口。因此,stdio 是面向行的,而 conio 是面向全屏的。所以它的用途是全屏应用程序,而不仅仅是简单的基于行的输入和输出。
【解决方案2】:

差异实际上是深远的。 stdio 与 STDIN 和 STDOUT 对话,因此您可以将输出重定向到文件或通过管道重定向到另一个程序。 conio 的 DOS 实现没有。

Conio 直接与视频硬件对话(尽管它可能使用 BIOS 陷阱),因此速度更快,而且它通常会忽略终端序列,如 ANSI 转义序列。由于直接光标控制和通用 stdio 中缺少的一些其他功能,conio 对于编写使用颜色、鼠标和线条绘图符号的全屏交互式程序更有用,用于类似 GUI 的程序。

【讨论】:

    猜你喜欢
    • 2015-04-30
    • 2010-10-14
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2010-10-29
    • 2020-08-19
    相关资源
    最近更新 更多