c++ - 输入字符时 cin 跳过
问题描述
我有一个程序,我必须在其中输入两个双精度数,并且它必须在字符“|”时终止 被输入。但是,当我输入字符 '|' cin 被跳过,程序将直接运行而不会阻塞。输入字符后如何终止程序?
我的代码是:
#include "std_lib_facilities.h"
int main()
{
bool start = true;
while(start)
{
double number1, number2 = 0;
cout << "Enter two doubles\n";
cin >> number1 >> number2;
if((number1 == double{'|'}) || (number2 == double{'|'}))
{
start = false;
}
cout << "The value of number1 is: " << number1 << '\n';
cout << "The value of number2 is: " << number2 << '\n';
}
return 0;
}
解决方案
您不能将|
字符读入double
变量。 operator>>
将无法提取数字并将failbit
在流上设置 ,您可以对其进行测试,例如:
#include "std_lib_facilities.h"
int main()
{
do
{
double number1, number2;
cout << "Enter two doubles\n";
if (!(cin >> number1 >> number2))
break;
cout << "The value of number1 is: " << number1 << '\n';
cout << "The value of number2 is: " << number2 << '\n';
}
while (true);
return 0;
}
否则,首先将输入读取为字符串,然后根据需要验证格式,例如:
#include "std_lib_facilities.h"
#include <string>
int main()
{
do
{
std::string input1, input2;
double number1, number2;
cout << "Enter two doubles\n";
if (!(cin >> input1 >> input2))
break;
if ((input == "|") || (input2 == "|"))
break;
number1 = std::stod(input1);
number2 = std::stod(input2);
cout << "The value of number1 is: " << number1 << '\n';
cout << "The value of number2 is: " << number2 << '\n';
}
while (true);
return 0;
}
推荐阅读
- javascript - 如何访问(和转换)“日期”到 Javascript?
- javascript - TypeError:无法读取未定义的属性(读取“原型”)React Typescript + Express
- python - Python Tkinter 文本小部件中的随机 { }
- resttemplate - Resttemplate无法解析T类型的结果,但能够得到LinkedHashMap的结果
- angular - Struts 1.3项目中的Angular11 html找不到资源
- angular - 如何在一段时间后无休止地显示模态?
- c++ - 这个散列函数中的键值使用了多少位?
- elasticsearch - 在 vega-lite 中将图例添加到子弹图
- javascript - 在 vscode 调试器中查看导入的变量时遇到问题 - Javascript 和反应
- javascript - Discord js v13频道过滤器不起作用