鱼C论坛

 找回密码
 立即注册
查看: 2104|回复: 3

怎么解决输入流没有得到对应类型输入而持续等待的问题,求大佬解答,感谢

[复制链接]
发表于 2020-4-29 11:50:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是那个温度转换的程序,要求输入要以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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 14:26:06 | 显示全部楼层
程序本身要求输入两个信息,输入一个肯定不行,如果没有按格式输入就是 default的内容了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 10:25:52 | 显示全部楼层
SugarCane88 发表于 2020-4-29 14:26
程序本身要求输入两个信息,输入一个肯定不行,如果没有按格式输入就是 default的内容了。

这个我知道,但是如果我想让只输入数字也会报错,并且能进行下一次输入要怎么改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 11:44:35 | 显示全部楼层
把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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 01:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表