char中只有一位数字

Jan*_*nny -1 c++ function char

我编写了一个函数,只有在输入为"1","2","3"或"4"时才能进行.所以,如果我输入5,例如.它说"这是错的,再试一次".我的问题是,如果我输入例如."12"它仍然继续进行,不仅如此,它将"1"放入第一个cin >>并将"2"放入我程序的下一个cin >>.我怎么能告诉他"12"也不对,但只有"1,2,3和4"?

这是我的功能

char zeichen;


void operation()
{
    bool beginn = false;
    do
    {
        cout << "----- Geben Sie hier den Operator ein, mit welchem Sie rechnen wollen -----" << endl;
        cout << "___________________________________________________________________________" << endl << endl;
        cout << " | 1 | Addition" << endl;
        cout << " | 2 | Subtraktion" << endl;
        cout << " | 3 | Multiplikation" << endl;
        cout << " | 4 | Division; inklusive Rest" << endl;
        cout << "___________________________________________________________________________" << endl << endl << endl;

        cout << "Ihre Auswahl: ";
        cin >> zeichen;
        switch(zeichen)
        {
        case '1':
        case '2':
        case '3':
        case '4':
            beginn = true;

            break;

        default:
            cout << endl << "Ihre Angabe ist nicht richtig. Bitte geben Sie eine der gegebenen Ziffern ein." << endl << endl;
            system("PAUSE");
            break;
        }
        system ("CLS");
    }
    while (beginn == false);
}
Run Code Online (Sandbox Code Playgroud)

这是我的主要程序,它被称为(只是它的一部分)

#include <iostream>
#include "conversions.h"
#include "rechnung.h"
#include "menue.h"
#include <string>

using namespace std;

int rechnung()
{
    unsigned int basis;
    string eingabe1;
    string eingabe2;
    //unsigned int eingabe;
    //unsigned int rest = 0;
    char again = 'Y';
    while (again == 'Y')
    {
        operation();
        system ("CLS");
        cout << "Nun geben Sie die Basis des Zahlensystems ein, in welchem Sie rechnen möchten" << endl;
        cin >> basis;
        cout << endl << "Sie rechnen nun im " << basis << "er Zahlensystem" << endl << endl;
        system ("CLS");

        cout << "Geben Sie bitte Ihre zwei Zahlen ein, mit denen Sie rechnen möchten" << endl;
        cout << " 1. Zahl: ";
        cin >> eingabe1;
        cout << endl << "2. Zahl: ";
        cin >> eingabe2;
        cout << endl;
Run Code Online (Sandbox Code Playgroud)

Jef*_*ica 5

最简单的方法是使用:

int zeichen;
Run Code Online (Sandbox Code Playgroud)

    case 1:
    case 2:
    case 3:
    case 4:
Run Code Online (Sandbox Code Playgroud)

cin 然后将读取多个字符并将输入解释为数字,而不是单个字符.

编辑:如果你想处理其他输入,那么你应该使用std::string zeichen.你将使用ifs而不是switch