我目前正在从名为'Ivor Hortons Beginning Visual C++ 2010'的书中学习C++。使用getch()来保持命令提示符打开Visual C++ 2010
在我到目前为止所尝试的所有例子中,我不得不使用getch()来保持打开命令提示符,并且有时从主方法的结尾删除返回0语句。
这是一个虚无of windows的Windows 7,它会引起更多的问题吗?这样做目前没有问题,但由于这不包括在书中,我想知道它是否可能是我设置错误的东西。
非常感谢:)
我目前正在从名为'Ivor Hortons Beginning Visual C++ 2010'的书中学习C++。使用getch()来保持命令提示符打开Visual C++ 2010
在我到目前为止所尝试的所有例子中,我不得不使用getch()来保持打开命令提示符,并且有时从主方法的结尾删除返回0语句。
这是一个虚无of windows的Windows 7,它会引起更多的问题吗?这样做目前没有问题,但由于这不包括在书中,我想知道它是否可能是我设置错误的东西。
非常感谢:)
getch()
不特定于操作系统,但它不是直接移植。在C++
中执行此操作的首选方法是使用std::cin.get();
。
main
功能可以return 0
隐式(你不需要真正拥有该代码,见下文)。
int main()
{
// valid, return 0 implied.
}
约从main
隐含return 0
更多详细信息,请参阅this question。
'getch()'甚至不是Windows函数;它是从MS-DOS剩下的。 (在Windows下:在Unix上,它是curses的一部分。) –
足够公平,已编辑。 – Chad
程序结束后,该程序创建的任何资源(包括终端窗口)都将被释放。通过使用getch可以防止程序结束。这是正常的行为,应该继续这种方式,直到Windows是一个遥远的记忆。
如果您从一个已经存在的命令窗口中启动该程序,该窗口将关闭而不是,因为它不是由程序创建的。
控制台窗口是**不**是程序创建的资源;因为程序结束,绝对没有理由关闭它。 –
@詹姆斯,如果没有现成的程序,代表程序创建控制台窗口。我不知道Windows是否会执行它,或者如果C++运行时执行它,我不在乎 - 它仍然属于正在执行的程序。 –
它由Visual Studios创建。如果您从控制台窗口调用应用程序,则不会创建它。它属于视觉工作室(Visual Studios确实应该采取措施保持开放)。 –
首先,getch()
不是标准的C或C++函数。即使在Windows的 下,我认为它的使用已被废弃;它的语义返回到CP/M 和早期的MS-DOS。其次,它确实没有必要,至少不用于控制台应用程序(并且我不认为它适用于非控制台应用程序)。如果您从控制台窗口运行程序 ,窗口保持打开状态。如果你是从Visual Studios运行它的 ,那么在 return语句中设置一个断点是很简单的,它会阻止程序并保持窗口打开 (尽管IDE仅仅因为 而没有理由关闭它你的程序已经终止)。
当你双击程序启动它时呢?这不符合你所概述的任何一种情况。 –
@Mark Ransom您不要双击启动控制台应用程序。一旦开发完成,您可以从控制台调用它们。或者从批处理脚本中获取,希望以更优雅的方式处理事物。 –
为什么不能?它可能不是最佳的,但它工作得很好。 –
使用_getch()代替getch()
错以什么方式?另外,如果你点击CTRL + F5,控制台会在应用程序终止时自动为你打开。 – Jon
CTRL + F5不启动调试器。 – ChrisV
您应该更好地使用cin.get(),因为getch()不是标准函数,因此不可移植。 – PlasmaHH