C++ 系统(“暂停”)或保持“窗口”打开()?

C++ 系统(“暂停”)或保持“窗口”打开()?,c++,C++,我正在阅读编程原理和实践2ed。在Hello World程序中,他们使用了一行,keep\u window\u open() 在找到这本书之前,我学习了同样的Hello World程序,但使用了system(“暂停”) 我的问题如下: 保持窗口打开()和系统(“暂停”)实际上是同一件事,还是不同 如果它们在功能上基本相同,那么是否有理由使用一个而不是另一个?如果是,何时以及为什么 如果它们不同,那么保持窗口打开()不赞成使用系统(“暂停”),反之亦然?(更简单的术语:哪一个更适合常规使用?) 如

我正在阅读编程原理和实践2ed。在Hello World程序中,他们使用了一行,
keep\u window\u open()

在找到这本书之前,我学习了同样的Hello World程序,但使用了
system(“暂停”)

我的问题如下:

  • 保持窗口打开()
    系统(“暂停”)
    实际上是同一件事,还是不同
  • 如果它们在功能上基本相同,那么是否有理由使用一个而不是另一个?如果是,何时以及为什么
  • 如果它们不同,那么
    保持窗口打开()
    不赞成使用
    系统(“暂停”)
    ,反之亦然?(更简单的术语:哪一个更适合常规使用?)
  • 如果
    keep_window_open()
    仍在使用中,它是否是
    std
    命名空间的一部分,需要将其写入
    std::keep_window_open()
    以便在不使用
    命名空间std的情况下使用
  • 保持窗口打开()
    系统(“暂停”)
    实际上是同一件事,还是不同

    它们有一个等价的用例(在输入用户输入之前阻止调用过程),但它们以不同的方式处理

    system(“PAUSE”)
    生成一个单独的进程来运行操作系统的命令行处理器,并让它执行
    PAUSE
    命令,该命令将消息输出到控制台,然后阻止调用进程,直到输入用户输入

    keep_window_open()
    不使用单独的进程,它只是使用
    std::cout
    std::cin
    显示控制台消息,然后等待用户输入,所有这些都在调用进程中(显示实际实现)

    如果它们在功能上基本相同,那么是否有理由使用一个而不是另一个?如果是,何时以及为什么

    system(“PAUSE”)
    依赖于平台,因为它依赖于存在的操作系统处理器,并且该处理器执行
    PAUSE
    命令

    <代码> KeEpWielWOWOPEN()/<代码>使用标准C++特性。

    如果它们不同,那么
    保持窗口打开()
    不赞成使用
    系统(“暂停”)
    ,反之亦然

    我想,您应该使用
    保持窗口打开()
    ,因为它依赖于标准行为,而不依赖于运行代码的平台。但是,如果您的代码运行在支持它的平台上,那么使用
    系统(“暂停”)
    并没有什么问题

    如果
    keep\u window\u open()
    仍在使用,它是否是
    std
    命名空间的一部分


    <代码> KeEpWielWOWOPEN()/<代码>不是C++的一部分,它只是一本介绍在书中的简单用户定义函数。因此,它不是

    std
    名称空间的一部分。

    有关如何实现
    keep\u window\u open()
    的信息,请参阅<代码>系统(“暂停”)和 KEPEXWOWOWOPEN()/CUT>是等价的,但它们以不同的方式完成了相同的事情(等待用户输入)。<代码> KeEPyWOWOWOPEN()/<代码>不是标准C++的一部分。这是Stroustrup为他的书设计的,你只能使用它,因为你包含了随书分发的
    std_lib_facilities.h
    。@Remylebau不,它们不是等价的。这两种方法都旨在实现相同的目标,但是
    系统(“暂停”)
    依赖于平台,
    保持窗口打开()
    不是(并且只使用标准的依赖方式)。FWIW,如果您试图做的只是在程序完成后立即停止命令行窗口关闭,可以在main中的最后一行代码上放置断点,使其停止。这样,您就不需要编辑代码来删除暂停。@NicholasJarecki不,断点是一种IDE/调试器工具,它允许您将一行代码标记为一个点,以便它在到达时停止执行。在调试过程中经常使用它,以使代码在某些点停止,这样您就可以看到代码中的内容的价值。