我正在尝试创建一个菜单和子菜单程序来生成一个菜单,然后如果你按下' p'你进入子菜单,你应该能够通过按下“退出”子菜单来退出子菜单。然后按“'”退出程序。按下按钮后菜单运行两次,我认为这是因为cin.get()将输入键作为额外字符读取,我试图通过编写一个函数来修复它,从用户输入中过滤掉输入,但是程序仍然无法正常工作。此外,我也不明白为什么该计划确实会退出“#”键是按下的。有人可以指出我做错了吗?
提前谢谢!
这是我到目前为止的代码:
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
using namespace std;
void menu();
int main (){
menu();
}//main
//regulating the input
void invoer (char in){
cin.get(in);
if (in=='\n'){
cin.clear(in);
} //if
cin.clear();
} //invoer
void submenu(){
bool submenu = true;
while (submenu != false){
cout<< "Dit is heb submenu, om uw parameters aan te passen: \n";
cout<< "Maak hier uw keuze\n";
cout<< "(T)erug, \n";
char s;
invoer(s);
switch (s)
{
case 'T':
case 't':
submenu = false;
cin.clear();
break;
default:
cout<< "Foutieve invoer, probeer het nog eens \n\n";
break;
} //switch
}//while
}//submenu
void menu (){
char m;
bool menu = true;
do
{
cout<< "Goedendag hiermee heeft u het menu om hiermee te oefenen: \n";
cout<< "(S)toppen, s(C)hoon, (R)andom en (P)arameters \n" ;
invoer(m);
cout<<m;
switch (m)
{
case 's':
menu = false;
break;
case 'p':
submenu();
cin.clear();
break;
default :
cout<< "Foutieve invoer, probeer het nog eens \n\n";
break;
}; // switch
} // while
while ( m != 'false');
} //menu