吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2392|回复: 7
收起左侧

[C&C++ 转载] 模块化菜单,初学C++写的

[复制链接]
caoxiaolin 发表于 2021-11-10 10:04
模块化菜单,初学C++写的,写的不太好,以后要多多向大佬们学习学习!

[C++] 纯文本查看 复制代码
#include <iostream>

//Menu_s:菜单字符数组 number:菜单文字编号,从1开始
unsigned int menu(const char **Menu_s, unsigned int number);
bool input_check(void);

int main(void)
{
    unsigned int ret;
    const char *Menu_s[] = 
    {
        "查找",
        "排序",
        "添加",
        "删除",
        "帮助",
    };
    ret = menu(Menu_s, sizeof(Menu_s)/sizeof(char*));
    std::cout << "ret:" << ret;
    std::cout << " choose:" << Menu_s[ret-1] << std::endl;
    
    std::cout << "--------------" << std::endl;
    std::cout << "done!";
    std::cin.get();
    return 0;
}

unsigned int menu(const char **Menu_s, unsigned int number)
{
    if(Menu_s == NULL || number == 0)
    {
        return 0;
    }
    unsigned int input;
    int i;

    std::cout << "-----menu-----" << std::endl;
    for(i = 0; i < number; ++i)
    {
        std::cout << "[" << i+1 << "] ";
        std::cout << Menu_s[i] << std::endl;
    }

    //输入数据
    bool is_ok = false;
    std::cout << "--------------" << std::endl;
    std::cout << "Please enter the number:";
    std::cin >> input;
    // 判断输入类型是否正确和输入的数字范围是否在菜单列表中,不在则输入错误重新输入
    while( ((is_ok = input_check()) == false) || (input > number || input <= 0) )
    {
        std::cout << "Input error please re-enter:";
        std::cin >> input;
    }

    return input;
}

bool input_check(void)
{
    
    if(std::cin.fail() == true) //fail是true,代表输入数据类型和cin传入变量的数据类型不一致
    {
        std::cin.clear(); //此处用cin.clear()这个函1数进行流标志复位,使得cin.fail恢复正常
        //读取缓冲区的剩余字符
        while(std::cin.get() != '\n');
        return false;
    }
    else
    {
        char tmp;
        //当输入类型正确时也去除缓冲区多余的数据 并处理第一个字符输入正确 其它字符输入错误的情况
        tmp = std::cin.get();
        if(tmp != '\n')
        {
            //说明输入了其它数据
            while((std::cin.get()) != '\n');
            return false;
        }

    }
    return true;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

只有午安 发表于 2021-11-10 11:17
小心你号没了
某神隐 发表于 2021-11-10 11:11
qwe2271156 发表于 2021-11-10 12:16
头像被屏蔽
tlf 发表于 2021-11-10 14:44
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| caoxiaolin 发表于 2021-11-10 16:12
tlf 发表于 2021-11-10 14:44
还c++  呢?!

C++肯定不是这样写的,我这样写和C语言差不多了,只是刚刚学还没有学到后面的面向对象的知识,所以发出来主要是想看看大佬们的一些建议
 楼主| caoxiaolin 发表于 2021-11-10 16:21
某神隐 发表于 2021-11-10 11:11
名字QQ暴露了,最好遮掩一下

尴尬,我会认真看看版规的
herobin666 发表于 2021-11-11 15:08
还有很长的路要走。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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