当命令参数已设置为数据文件时使用 System("pause")

Using System("pause") when Command Arguments have been set to a data file

我目前正在为 class 编写一个非常简单的程序,并且很快意识到我从来不知道 System("pause") 命令在做什么。

程序提示要求我将命令参数(位于 Visual Studio 2013 中的调试->属性->配置属性->调试)设置为输入文件,以便我可以读取使用 "cin" 的文件。然而,在设置此 属性 之后,我注意到熟悉的 System("pause") 命令不再起作用以保持控制台 window 打开。 (我将 属性 改回默认值并且它再次工作,所以这似乎是问题所在。)

有什么解释吗?我真的很好奇 System("pause") 现在在后台真正做什么。

Windows 上的 system 函数启动 cmd.exe 的实例并要求它执行您传递的命令,在本例中为 pause。通常 cmd.exe 会等待用户按下一个键。换句话说,它从标准输入设备读取一个字符,并在读取后立即 returns 。好吧,你给了它一个文件作为标准输入设备,所以它从那个文件中读取一个字符并立即returns。

它完全按照您的要求进行操作。后台没有什么神秘的事情发生。

您只需在命令行输入 pause < foo 即可轻松演示,其中 foo 是任何文件。在这种情况下,您会立即看到 pause returns。

正如 David Schwartz 在评论中指出的那样,使用 system("pause")horrible practice。如果您需要等待用户输入以继续,请使用一对简单的 coutcin 调用自行完成。