c++ - C++ 程序中的暂停控制台

标签 c++

在 C++ 程序中暂停控制台的最佳方法是什么?

  1. 使用 cin.get()
  2. 或使用 system("pause")
  3. 或使用 C 函数,如 getch()getchar()

使用 system("pause") 是否会导致代码不可移植,无法在 UNIX 中工作?

cin.get() 更适合用来暂停控制台吗?

最佳答案

可能有最好的方法(比如使用可移植的cin.get()),但没有好的方法 .完成工作的程序应该退出并将其资源还给计算机。

是的,任何 system() 的使用都会导致代码不可移植,因为参数会传递给拥有您的进程的 shell。

在源代码中包含暂停代码迟早会导致麻烦:

  • 有人在签到前忘记删除暂停代码
    • 现在所有的工作伙伴都想知道为什么应用程序不再关闭了
    • 版本历史被污染
  • #define 是 hell
  • 对于从控制台运行您的代码的人来说,这很烦人
  • 尝试从脚本中启动和结束程序时非常、非常、非常烦人;如果您的程序是 shell 中管道的一部分,则非常烦人,因为如果程序没有结束,shell 脚本或管道也不会结束

相反,探索您的 IDE。它可能有一个选项在运行后不关闭控制台窗口。如果没有,作为一个物有所值的开发者,在附近始终打开一个控制台窗口是一个很好的理由。

或者,您可以将此设置为程序选项,但我个人从未见过带有选项--keep-alive-when-dead的程序。

故事的寓意:这是用户的问题,而不是程序的问题。不要污染你的代码。

关于c++ - C++ 程序中的暂停控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776262/

相关文章:

c++ - 具有 protected 派生成员的 CRTP

c++ - 我如何构建我的 C++ 代码,以便我只编写一次常用方法?

c++ - 加密字符串但收到无限循环

c++ - 如何制作多语言QT UI应用程序?

C++优先级队列构造函数

c++ - 我如何找出 g++ 包含哪个 header ?

c++ - 两个矩形的交集面积

c# - 如何发送ctrl+z

c++ - 如何将TYPED_TEST中的一些测试用例标记为预期失败?

c++ - 清除谷歌测试错误中的标准输出错误