解决C、C++程序执行结果一闪而过的方法---system("pause")、getchar()、cin.get()

在VS编写控制台程序的时候,包括使用其他IDE(Visual C++)编写C/C++程序,经常会看到程序的执行结果一闪而过,要解决这个问题,可以在代码的最后加上system("pause")、getchar()、cin.get()。

    比较常用的做法是使用system("pause"),这篇文章 Things to Avoid in C/C++ -- system("pause") 不推荐使用"system("pause"),因为:
1、不可移植。只适合Dos或Windows,不适合Linux等
2、耗费系统资源。调用系统命令system()去做"暂停程序"的事情有点大材小用。
3、必须添加头文件:stdlib.h或者cstdlib
所以,应该尽量摒弃。


推荐方法:
1、 C中,使用getchar();
2、 C++中,使用cin.get();

 

丰富一下两种替代方法:
1、C中

  printf("按任意键继续……");

  getchar();

2、C++中

  cout<<"按任意键继续……";

  cin.clear();

  cin.sync();

  cin.get();

备注:加上cin.clear()、cin.sync()这两句,是清空缓存区,让cin.get()真正接收到你的键盘输入。

本人注:有时候只用cin.get()无法使屏幕停住。具体原因:

cin.get()是取流中的一个字符
而cin>>sl;在输入时是以回车结束的,同时回车还保留在缓冲区里
这时当你cin.get()时,因为缓冲区不为空,就直接读了回车
你可以使用cin.sync()来清空流

cin.get();//是因为输出字符串的时候你输入了回车,而get()就读取了该回车符,所以停不下来
            //当加上fflush(stdin);时就将缓冲区的回车符清除了,所以等待你的输入而停了下来~

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。

转载于:https://www.cnblogs.com/teng-xia/p/5400885.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值