关于c++程序运行的窗口停留问题

本文探讨了在程序运行过程中窗口一闪而过的现象及其解决办法。详细解释了getchar函数在特定情况下的失效原因,并提供了多种解决方案,包括使用system(PAUSE)、调整VS调试方式及清除输入缓冲区的方法。

今天调试运行程序时,发现每次运行时窗口一闪而过的处理办法,在程序return之前添加getchar()函数竟然不管事了。于是查找原因,后面发现了以下几种解决办法以及对应的知识内容,记录下来。

  • getchar函数失效的原因
自己在前面的代码中使用了cin,输入一个变量的值。在输入变量的值后,我们都要键入一个回车符号作为结束符,而cin函数是不会读入空格和回车符,只是把他们作为区分不同变量和结束的标志。那么键入回车符后,回车符便被存入了输入缓存区,当程序结束时调用getchar函数时,会立即将之前缓存区中的回车符读入,所以程序将继续运行,导致不能够作为窗口停留。

  • getchar/cin/cin.get/cin.getline等几个不同的输入函数之间的区别,详见http://blog.youkuaiyun.com/oier00lcj/article/details/78152243

  • 几种解决程序运行窗口一闪而过的办法

  1.   在程序结尾添加system("PAUSE");函数的语句,此语句能够将程序停止于此处,并且按任意键继续。
  2.  利用编译器VS调试时,不使用(快捷键F5)这个默认调试按钮,而是运行:开始执行(不调试)(快捷键Ctrl+F5),但此按钮只用于查看程序运行结果的情况,不能设置断点等功能。可以将开始执行(不调试)按钮添加到快捷命令栏中方便下次使用。添加的步骤如下: 后面就可以看到快捷栏有一个开始执行(不调试)的符号了,在只需要查看代码运行效果的时候就可以方便快捷的,使用它了。是不是省心了许多。
  3. 仍然在程序结尾添加getchar()函数,等待输入字符。但是此前添加一个语句清楚输入缓冲区字符。添加的语句如下:while ((c = getchar()) != '\n' && c != EOF);    /*直接运行可清除输入缓存流*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值