0

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

程序提示要求我将命令参数(位于 Visual Studio 2013 中的 Debug->Properties->Configuration Properties->Debugging 中)设置为输入文件,以便我可以使用“cin”从文件中读取。但是,在设置此属性后,我注意到熟悉的 System("pause") 命令不再用于保持控制台窗口打开。(我将属性改回默认值,它又可以工作了,所以这似乎是问题所在。)

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

4

1 回答 1

1

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

它正在做你要求它做的事情。背景中没有什么神秘的事情发生。

您可以通过pause < foo在命令行输入foo任何文件来轻松演示这一点。在这种情况下,您会看到它pause立即返回。

正如大卫施瓦茨在评论中指出的那样,使用system("pause")是一种可怕的做法。如果您需要等待用户输入继续,请自己使用一对简单的coutandcin调用来完成。

于 2017-01-18T02:30:46.280 回答