概述
模块化菜单,初学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;
最后
以上就是平常大地为你收集整理的模块化菜单,初学C++写的的全部内容,希望文章能够帮你解决模块化菜单,初学C++写的所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复