C++可执行文件运行后直接关闭且不显示计算结果该如何解决?
问题背景
我们需要编写一段C++代码,功能为接收用户输入的数值后计算其平方值并输出,但运行程序时,程序接收输入后就直接结束,完全不显示计算得到的乘积。
问题代码
#include<iostream> using namespace std; int main() { double dValue1, product; cout<<"Please input your daily budget.\n"; cin>>dValue1; product=dValue1*dValue1; cout<<product; cin.get(); return 0; }
根因分析
cin读取数值类型数据时,仅会提取输入流中匹配的数字内容,用户输入完成后按下的换行符会残留在输入缓冲区中。后续执行cin.get()时,会直接读取到缓冲区残留的换行符,不会触发等待用户手动输入的逻辑,程序直接执行完成退出,导致窗口一闪而过无法看到输出结果。
解决方案
- 临时快速修复:引入
<stdio.h>头文件后连续调用两次getchar(),第一次读取残留换行符,第二次等待用户输入,即可停留窗口查看输出内容,适合临时调试快速解决问题。 - 通用规范修复:在调用
cin.get()前先清空输入缓冲区残留内容,代码兼容性更强,修改后的示例如下:
#include<iostream> #include <limits> using namespace std; int main() { double dValue1, product; cout<<"Please input your daily budget.\n"; cin>>dValue1; product=dValue1*dValue1; cout<<product; // 清空输入缓冲区所有残留字符,直到匹配到换行符为止 cin.ignore(numeric_limits<streamsize>::max(), '\n'); cin.get(); return 0; }
内容的提问来源于stack exchange,提问作者derpydoo
相关产品推荐
相关产品推荐

