在输入和双菜单中输入键

时间:2016-11-08 15:02:06

标签: c++

我正在尝试创建一个菜单和子菜单程序来生成一个菜单,然后如果你按下' 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

0 个答案:

没有答案