最近,我一直试图从这个网站学习c++。不幸的是,每当我试图运行其中一个代码示例时,我看到该程序打开了大约半秒钟,然后立即关闭。有没有办法阻止程序立即关闭,以便我能看到我的努力的成果?
当前回答
如果您从一个合格的IDE(如code::Blocks)运行代码,IDE将管理它用来运行代码的控制台,在应用程序关闭时保持打开状态。您不希望添加特殊的代码来保持控制台的打开状态,因为这将阻止它在IDE之外实际使用时正常工作。
其他回答
我只是这样做:
//clear buffer, wait for input to close program
std::cin.clear(); std::cin.ignore(INT_MAX, '\n');
std::cin.get();
return 0;
注意:只有在程序早期使用过cin时,才需要清除cin缓冲区。同样使用std::numeric_limits::max()可能比INT_MAX更好,但它有点啰嗦,通常没有必要。
编辑:正如Charles Bailey在下面的评论中正确指出的那样,如果stdin中缓冲了字符,这将不起作用,而且真的没有好方法来解决这个问题。如果运行时附带调试器,John Dibling建议的解决方案可能是解决问题的最干净的解决方案。
也就是说,我把它留在这里,也许其他人会觉得它有用。在开发期间编写测试时,我经常使用它作为一种快速的方法。
在main函数的末尾,你可以调用std::getchar();
这将从stdin中获取单个字符,从而为您提供“按任意键继续”类型的行为(如果您确实想要“按任意键”消息,则必须自己打印一条)。
你需要为getchar添加#include <cstdio>。
好吧,我猜你在Windows上使用Visual Studio…为什么?因为如果你在某种Linux操作系统上,那么你可能会从控制台运行它。
不管怎样,你可以像其他人建议的那样在程序的末尾添加一些无用的东西,或者你可以只按CTRL + F5(不用调试就开始),Visual Studio在完成后就会离开控制台。
如果你想运行调试版本而不给你的代码添加垃圾,另一个选择是打开控制台窗口(开始->运行-> cmd)并导航到调试输出目录。然后,只需输入可执行文件的名称,它就会在控制台中运行调试程序。然后你可以使用Visual Studio的attach to process或者其他你想要的东西。
这里有个问题,不太明显。不知怎么的,我在程序的最后一行添加了一个调试断点。不知道我是怎么做到的,可能是在不同屏幕之间跳跃时错误地点击了鼠标。我在VS Code工作。
当我进行调试时,系统立即跳转到那个断点。没有错误消息,没有临时输出,什么都没有。我就想,程序是怎么通过我设置的所有断点的?我花了太长时间才想明白。
显然,系统将最后一行断点视为“第一个”停止。简单的解决方法?删除断点,哎呀!(此处插入前额。)
包括conio.h,在代码的末尾,在返回0之前,写入_getch();
推荐文章
- decltype(auto)的一些用途是什么?
- Shared_ptr转换为数组:应该使用它吗?
- Printf与std::字符串?
- 禁用复制构造函数
- 只接受特定类型的c++模板
- c#和Java中的泛型有什么不同?和模板在c++ ?
- console.log()和console.debug()的区别?
- 如何禁用标准错误流的日志记录?
- c++ 11中的递归lambda函数
- 在c++中指针使用NULL或0(零)吗?
- 在c++中,如何将int值附加到字符串中?
- 就性能而言,使用std::memcpy()还是std::copy()更好?
- 为什么布尔值是1字节而不是1位?
- 四舍五入到一个数字的最接近倍数
- 为什么“System.out。”println“工作在Android?