鱼C论坛

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

非法输入咋处理。

[复制链接]
发表于 2021-12-14 22:16:43 | 显示全部楼层 |阅读模式

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

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

x
我用Switch case语句时,
int i;

        InitFishC();  // 初始化数据。
        while (1)
        {
                std::cout << "请选择需要进行的操作: \n";
                std::cout << "1. 打印数据到屏幕\n";
                std::cout << "2. 录入数据\n";
                std::cout << "3. 退出程序\n";
                std::cin >> i;

                switch (i)
                {
                case 1:
                        if (ReadFishC())
                                std::cout << "成功读取文件^_^\n\n";
                        else
                                std::cout << "读取文件失败T_T\n\n";
                        break;
                case 2:
                        RecordFishC();
                        break;
                case 3:
                        return 0;
                }
        }像这种。如果我输入的i= n之类的那些英文字母,它就会死循环。请问怎么才能将非法输入筛选掉。求助大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-14 22:37:08 | 显示全部楼层
#include <iostream>
#include <limits>

int get_integer() {
    int result;
    while(1) {
        if(std::cin >> result) break;
        std::cout << "输入错误,请重新输入!" << std::endl;
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return result;
}

int main() {
    std::cout << get_integer() << std::endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-14 22:42:04 | 显示全部楼层
        if(isdigit(i) && i < 4){ // 最外层附加条件
            switch (i){
                case 1:
                    if (ReadFishC())
                    std::cout << "成功读取文件^_^\n\n";
                else
                    std::cout << "读取文件失败T_T\n\n";
                    break;
                case 2:
                    RecordFishC();
                    break;
                case 3:
                    return 0;
            }
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-14 22:42:56 | 显示全部楼层
记得 include <cctype>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 07:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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