【发布时间】:2017-06-02 07:08:25
【问题描述】:
我目前正在为一个类编写一个非常简单的程序,并且很快意识到我从来不知道 System("pause") 命令在做什么。
程序提示要求我将命令参数(位于 Visual Studio 2013 中的 Debug->Properties->Configuration Properties->Debugging 中)设置为输入文件,以便我可以使用“cin”从文件中读取”。但是,在设置此属性后,我注意到熟悉的 System("pause") 命令不再用于保持控制台窗口打开。 (我将属性改回默认值,它又可以工作了,所以这似乎是问题所在。)
有什么解释吗?我真的很好奇 System("pause") 现在在后台到底在做什么。
【问题讨论】:
-
您的程序是否具有交互性?如果它是交互式的,它如何与这种重定向一起工作?如果不是,为什么要等待按键被击中?听起来你故意破坏你的程序,让它做你莫名其妙地配置你的IDE 不做的事情,而不考虑声音设计原则。 (可悲的是,许多课程都教坏习惯。这是一种常见的习惯。)
-
您不应该使用
system("pause")来保持窗口打开。它始终是垃圾质量代码的标志。如果您在 Visual Studio IDE 下运行,请将项目属性中的“子系统”设置为“CONSOLE”,窗口将自行保持打开状态(在没有调试器的情况下运行)。 -
@DavidSchwartz 该命令只是用于暂停程序以进行调试,以便我可以看到程序的输出。我已经阅读了您在下面提供的链接以回应另一个答案。我可以通过使用断点来解决这个问题。
-
@AustinC 如果您希望窗口保持打开状态,为什么不告诉打开它的东西,以及关闭它的东西,而不是关闭它? (你被教过使用
system("pause")吗?如果是这样,老实说,如果可能的话,找一个不同的导师。这是一个巨大的警告信号,表明导师根本不了解C的角色或 C++ 程序,或如何考虑设计一个适合合理范围的程序。) -
@DavidSchwartz 我被教导使用它进行调试,是的。我很想知道推荐什么其他方式,因为我没有按照你的建议。你说的是打开和关闭它,我将如何操作这些过程?
标签: c++ c commandargument