【问题标题】:How do I stop the terminal from closing in C++ after the first std::cin?如何在第一个 std::cin 之后阻止终端在 C++ 中关闭?
【发布时间】:2018-01-21 18:51:36
【问题描述】:

我正在上初学者的 C++ 课程。在家里,我试图复制一个 BMI 计算器,使用 std::cin 来获取数据,并在遇到问题时使用 std::cout 来提问。每当我在输入第一个 std::cin 后按 enter 时,终端就会关闭。上课挺好用的,谁能告诉我怎么回事?

【问题讨论】:

标签: c++ terminal window windows-10


【解决方案1】:

当您运行代码时,它会逐行执行并执行。因为您的代码到达了最后一行,所以它停止并关闭了终端。我建议在最后使用while 循环或另一个std::cin >>

【讨论】:

  • 如果你从终端调用你的程序你不会有这个问题,但你可以使用 getchar();解决您的问题
【解决方案2】:

如果您将程序作为独立的可执行文件运行,它将在完成后关闭终端。您可以在 Windows/DOS 上使用类似 system("PAUSE") 的函数在最后停止执行,或者如果您需要跨平台的代码,则可以在最后请求输入(如 std::cin.get())。这将等待一些输入,以便您可以看到程序的输出,然后您可以通过输入一些输入来退出它。

【讨论】:

  • system("PAUSE"); 是 Windows/DOS 特定的 hack,而不是通用的跨平台解决方案。还;首先使用system 是可怕的;享受所有令人讨厌的安全问题。
  • 是的,我说过OP可以在windows上使用这个,我会添加DOS。这个问题也被标记为windows,所以我觉得这很合适。
  • CRT 的 system 函数不使用 CMD 的 /d 选项来禁用执行“自动运行”命令,因此它最终可能会运行任意命令。最好用_write_getch 自己实现这个,不要那么复杂。或者只是在退出时生成一个 CMD 或 PowerShell 实例。默认情况下,shell 将附加到当前控制台以使其保持打开状态。
猜你喜欢
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多