怎么解决输入流没有得到对应类型输入而持续等待的问题,求大佬解答,感谢
这是那个温度转换的程序,要求输入要以c或f结尾,但是如果末尾没有字符(比如直接只输入数字),type得不到输入就会一直等待,要怎么解决?#include <iostream>
using namespace std;
int main()
{ float value;
char type;
float nvalue;
cout.precision(4);
int a=0;
do
{a=0;
cin>>value>>type;
switch(type)
{case'F':
case'f':nvalue=value-32/1.8; cout<<nvalue<<'C'<<endl;break;
case'C':
case'c':nvalue=value*1.8+32;cout<<nvalue<< 'F'<<endl;break;
default: a=1;cout<<"输入格式错误\n请重新输入:"<<endl;break;
}
}
while(a);
cout<<"输入任意字符结束"<<endl;
return 0;
}
程序本身要求输入两个信息,输入一个肯定不行,如果没有按格式输入就是 default的内容了。 SugarCane88 发表于 2020-4-29 14:26
程序本身要求输入两个信息,输入一个肯定不行,如果没有按格式输入就是 default的内容了。
这个我知道,但是如果我想让只输入数字也会报错,并且能进行下一次输入要怎么改呢? 把value和type分开来处理吧。
#include <iostream>
using namespace std;
int main()
{
float value;
char type;
float nvalue;
cout.precision(4);
int a = 0;
cout << "输入温度(以C,c,F,f结尾): " << endl;
do
{
a = 0;
cin >> value;
if (cin.fail()) {
a = 1; cout << "输入格式错误\n请重新输入:" << endl;
cin.clear(); while (cin.get() != '\n');
continue;
}
cin.get(type);
switch (type)
{
case'F':
case'f':
nvalue = value - 32 / 1.8; cout << nvalue << 'C' << endl; break;
case'C':
case'c':
nvalue = value*1.8 + 32; cout << nvalue << 'F' << endl; break;
default:
a = 1; cout << "输入格式错误\n请重新输入:" << endl;
if(type != '\n') while (cin.get() != '\n'); break;
}
} while (a);
cout << "输入任意字符结束" << endl;
return 0;
}
页:
[1]