我正在阅读编程原理和实践2ed.,在Hello程序中,他们使用一行keep_window_open()
。
在找到这本书之前,我学习了同样的Hello程序,但是使用了system("PAUSE")
。
我的问题如下:
keep_window_open()
和system("PAUSE")
实际上是一回事,还是它们不同?如果它们在功能上基本相同,那么是否有理由使用一个而另一个?如果是,什么时候?为什么?keep_window_open()
是不赞成system("PAUSE")
,还是相反?(更简单的术语:哪些是常用的?)keep_window_open()
仍在使用,它是否是std
名称空间的一部分,而不是需要将其编写为std::keep_window_open()
才能不使用keep_window_open()
?发布于 2021-01-20 11:42:43
是
keep_window_open()
和system("PAUSE")
实际上是一回事,还是它们不同?
它们有一个等价的用例(在输入用户输入之前阻止调用过程),但它们以不同的方式来处理它。
system("PAUSE")
生成一个单独的进程来运行OS的命令行处理器,并让它执行一个PAUSE
命令,该命令将消息输出到控制台,然后阻塞调用进程,直到输入用户输入为止。
keep_window_open()
不使用单独的进程,它只使用std::cout
和std::cin
显示控制台消息,然后等待用户输入,全部在调用过程中(this answer显示实际实现)。
如果它们在功能上基本上是相同的,那么是否有理由使用一个而另一个呢?如果是,什么时候和为什么?
system("PAUSE")
依赖于平台,因为它依赖于一个操作系统处理器,以及那个实现PAUSE
命令的处理器。
keep_window_open()
使用标准的C++特性。
--如果它们不同,那么
keep_window_open()
是否支持system("PAUSE")
,反之亦然?
IMHO,您应该使用keep_window_open()
,因为它依赖于独立于运行代码的平台的标准行为。但是,如果您的代码运行在支持system("PAUSE")
的平台上,那么使用它并没有什么问题。
如果
keep_window_open()
仍在使用,它是否是std
命名空间的一部分?
keep_window_open()
不是C++的一部分,它只是本书中介绍的一个简单的用户定义函数。所以不,它不是std
命名空间的一部分。
https://stackoverflow.com/questions/65816297
复制