创建控制台菜单C++的最佳方式
Best way to create a console menu C++
所以我正在使用数据结构制作一个简单的控制台项目,但这里我想知道哪种方式最适合实现控制台菜单,我想知道它的最佳实践是什么,这是我的实际菜单
void MainMenu(){
while(1)
{
int opt;
cout << endl << "----------------------------" << endl;
cout << endl << " Main Menu " << endl;
cout << endl << "----------------------------" << endl;
cin >> opt;
cout << "n" << endl;
switch (opt)
{
case 1:
SubMenu();
break;
case 2:
//Code
break;
case 0:
exit(1);
default:
break;
}
}
子菜单的例子是这个
void Submenu()
{
bool exit=true;
while(exit)
{
int opt;
cout << endl << "----------------------------" << endl;
cout << endl << " SubMenu " << endl;
cout << endl << "----------------------------" << endl;
cin >> opt;
switch (opt)
{
case 1:
//Code
break;
case 0:
exit = false;
}
}
我想知道这是否是实现菜单的好方法,或者是否有更好的方法,我也想知道在哪里可以找到书籍或文档,以便以正确的方式进行编码,使我的程序不使用PC上的大量资源。
IMHO,表驱动的控制台菜单非常好
它们允许常量数据(可以存储在只读存储器中(
它们是数据驱动的(您不需要添加代码来添加更多选项(
;发动机";或者驾驶员可以进行一次测试;如果使用相同的结构,则可以使用一个函数来处理多个菜单。
typedef void (*Menu_Processing_Function_Pointer)(void);
struct Menu_Option
{
char choice;
char const * p_selection_text;
Menu_Processing_Function_Pointer p_processing_function;
};
void Process_Selection_One();
void Process_Selection_Two();
static const Menu_Option main_menu[] =
{
{'1', "Option 1", Process_Selection_One},
{'2', "Option 2", Process_Selection_Two},
};
static const size_t quantity_selections =
sizeof(main_menu) / sizeof(main_menu[0]);
int main()
{
static const char menu_title =
"n"
"------------------------------n"
" Main Menun"
"------------------------------n"
;
cout.write(menu_title, sizeof(menu_title) - 1);
for (size_t i = 0; i < quantity_selections; ++i)
{
std::cout << main_menu[i].p_selection_text << "n";
}
cout << "Enter selection, 0 to quit: ";
char choice;
cin >> choice;
for (size_t i = 0; i < quantity_selections; ++i)
{
if (choice == main_menu[i].choice)
{
Menu_Processing_Function_Pointer p_function = main_menu[i].p_processing_function;
(p_function)();
break;
}
}
return EXIT_SUCCESS;
}
当选择无效时,您必须实现循环
以上是该技术的要点。
i将使用其他循环,然后切换情况:
void MainMenu(){
char coice='';
while(coice !='#')
{
int opt;
cout << endl << "----------------------------" << endl;
cout << endl << " Main Menu " << endl;
cout << endl << "----------------------------" << endl;
cin >> opt;
cout << "n" << endl;
if(coice =='1')
{
SubMenu();
}
if(coice =='2')
{
//Code
}
}
exit(1);
}
只要你没有选择结束程序,它就不会结束,而且更干净。
如果你愿意的话,你可以用同样的方式制作子菜单。
相关文章:
- 在c代码之间共享数据的最佳方式
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 在reactor中存储eventHandlers的最佳方式是什么
- 在AVX通道中混洗的最佳方式
- 从 T 创建 std::future 的最佳方式<T>
- C++:使用 std::unique_ptr 访问重载运算符++的最佳方式?
- 对列表列表中的元素进行分组的最佳方式
- 利用 GPU 的最佳方式
- 使用 QT C++过滤大数据的最佳方式
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 在C++中共享键值对的最佳方式
- 为Catch2中的外部文本文件指定路径的最佳方式
- 代表Quarto棋盘游戏棋子的最佳方式
- 等待线程的最佳方式是什么
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- 创建控制台菜单C++的最佳方式
- 只显示片段着色器的最佳方式是什么
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?