为了账号安全,请及时绑定邮箱和手机立即绑定

C ++中是否有不错的等待功能?

C ++中是否有不错的等待功能?

C++
红糖糍粑 2019-11-14 09:14:51
我在C ++中学到的第一件事是#include <iostream>int main(){    std::cout<<"Hello, World!\n";    return 0;}会非常迅速地出现并消失而不会停顿。为了防止这种情况,我不得不去记事本,并保存helloworld.exepause酶helloworld.bat当我需要创建一堆小型测试程序时,这变得很乏味,最终我只是将while(true);大多数测试程序都放在最后,以便可以看到结果。我可以使用更好的等待功能吗?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

许多人建议使用POSIX sleep,Windows Sleep,Windows system("pause"),C ++ cin.get()…… getch()大约在1920年代后期,甚至还有一个DOS 。


请不要做任何这些。


这些解决方案都无法通过我的团队的代码审查。这意味着,如果您提交此代码以将其包含在我们的产品中,则会阻止您的提交,并且将被告知您去寻找其他解决方案。(有人可能会争辩说,当您只是一个业余爱好者时,事情并没有那么严重,但是我建议您在宠物项目中养成良好的习惯将使您成为商业组织中的重要专家,并保持您的录用。 )


使控制台窗口保持打开状态,以便您可以读取程序的输出,这不是程序的责任!当在程序末尾添加一个wait / sleep / block时,就违反了单一责任原则,造成了巨大的抽象泄漏,并破坏了程序的可重用性/可链接性。它不再需要输入并提供输出-出于临时使用的原因而阻塞。这是非常不好的。


相反,您应该配置环境以在程序完成工作后保持提示打开。您的批处理脚本包装器是一个好方法!我可以看到必须手动进行更新会很烦人,并且您无法从IDE调用它。您可以使脚本将程序的路径作为参数执行,并配置您的IDE以直接调用它而不是直接调用程序。


一种临时的快速启动方法是将IDE的run命令从cmd.exe <myprogram>或更改<myprogram>为cmd.exe /K <myprogram>。该/K开关cmd.exe 品牌在给定的路径程序后提示保持打开状态已经终止。这将比您的Batch脚本解决方案稍微麻烦一些,因为现在您必须exit在完成读取程序输出后键入或单击红色的“ X”,而不是仅仅花一些空格键。


我假定使用的是IDE,因为否则您已经从命令提示符中调用了,那么这首先不会成为问题。此外,我假设使用Windows(根据问题中提供的详细信息),但是此答案适用于任何平台……顺便说一句,只有一半。


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 355 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信