解决控制台关闭问题的最佳实践是什么?

Lon*_*tar 15 c++ windows console

编译控制台程序后,控制台窗口在运行后立即关闭.保持开放的最佳做法是什么?我已经搜索了谷歌加载,我习惯于你不必担心它的代码块,但是,我想稍微使用Visual Studio和VS,我的控制台关闭.整个interwebz有几种不同的方式来保持它开放,但是,我已经读过它们大多数都是糟糕的编码技术.什么是每个人首选的方法?

Reg*_*ent 21

当我使用Visual Studio而我不需要调试时,我只需使用Ctrl+ F5keystroke 运行它- 它会阻止控制台关闭.


Sam*_*ell 13

由于您始终在调试器中运行,因此请在return语句中设置断点main().

调试器是你最好的朋友,学习(并尽早学习),在每个机会都利用它.


erj*_*ang 6

在控制台中运行程序,这将是运行控制台程序的预期方式...

或者,您可以创建一个小批处理文件来执行您的程序:

REM batch file to launch program
yourprogram.exe
PAUSE
Run Code Online (Sandbox Code Playgroud)

并且PAUSEcmd.exe命令将要求用户按任意键.

  • 实际上这很容易.右键单击VS中的项目,选择"属性".在调试部分下,您可以告诉它启动外部程序.在这种情况下,它将是启动应用程序的批处理文件. (9认同)

irh*_*irh 6

我倾向于使用system("PAUSE");它给你一个

Press any key to continue . . .

信息。

  • 有点苛刻.. 为什么不呢?这是一个临时的单行代码,可让 Visual Studio 在开发应用程序时以更方便的方式运行,而不是用于生产代码。 (6认同)
  • 我今天刚刚了解到这一点:(http://www.gidnetwork.com/b-61.html)它解释了为什么不使用系统(“暂停”);:) (2认同)

Tho*_*day 5

cin 是非常不优雅但容易让健忘的人得到:

{
  char c;
  std::cin >> c;
}
Run Code Online (Sandbox Code Playgroud)

这将保持窗口打开,直到您键入字符/*edit*/并按Enter键.

std::cin.get()当你输入一个角色时,它将关闭窗口,这取决于你习惯的习惯,"哎呀,我希望我没有关闭那个!"的风险稍大一些.而不是两击键operator>>(istream &).

两者都不同于system("pause")它们以程序可访问的方式返回您键入的字符的值,因此,如果不经常发生,一个kludge导致另一个,您可以根据您键入的内容编写switch语句(对于例子)立即退出,将一些值写入日志,再次运行,等等.

  • std :: cin.get()具有相同的效果并且更短 (3认同)
  • 它保持窗口,直到它可以获得一个角色.直到刷新缓冲区(cin被缓冲).因此,它要求用户按Enter(或键入大量字符并填充缓冲区). (3认同)