带循环的C ++ Switch语句

时间:2015-09-25 18:15:28

标签: c++ while-loop switch-statement

我有一个系统,用户可以根据需要输入尽可能多的输入并进行一些计算。

以下是完成此任务的主要循环:

int main() {
    char op;

    while(op != 'x'){
        cout << "Please select: " << endl;
        cout << "1 ---> A" << endl;
        cout << "2 ---> B" << endl;
        cout << "3 ---> C " << endl;
        cout << "4 ---> D " << endl;
        cout << "5 ---> Calculate" << endl;
        cout << "x ---> Exit" << endl;

        op = std::getchar();

        switch(op){
        case '1':
            cout<<"1";
            break;
        case '2':
            cout<<"2";
            break;
        case '3':
            cout<<"3";
            break;
        case '4':
            cout<<"4";
            break;
        case '5':
            cout<<"5";
            break;
        case 'x':
            return 0;
        default:
            continue;
        }

    }
    return 0;
}

然而,在控制台中,我已经看过cout语句两次而不是一次。示例控制台如下所示:

Please select: 
1 ---> A
2 ---> B
3 ---> C 
4 ---> D 
5 ---> Calculate
x ---> Exit
1
1Please select: 
1 ---> A
2 ---> B
3 ---> C 
4 ---> D 
5 ---> Calculate
x ---> Exit
Please select: 
1 ---> A
2 ---> B
3 ---> C 
4 ---> D 
5 ---> Calculate
x ---> Exit

关于如何在用户选择后只显示一次cout语句的任何想法?

2 个答案:

答案 0 :(得分:2)

看起来在

之后输入流中仍然有一些字符
    op = std::getchar();

添加一行以忽略输入流中的其余部分。

    op = std::getchar();
    int temp;
    while ( (temp = std::getchar()) != '\n' && temp != EOF );

答案 1 :(得分:-1)

只要查看您的代码,您可能应该放置一个&#34; endline&#34;在您阅读char

之后
op=std::getchar();
std::cout<<endl;

您也可能不需要输出用户的回复,除非您要说出类似“#34;您输入1&#34;”的内容。由于您的选项在用户输入选择之前列出,您将看到选项然后他们输入他们的选择然后while循环将再次显示选项。