int string ueberpruefung



  • Hi,
    ich habe mir ein Menue mit case und einer while-Schleife zusammengestellt.
    Das ganze sieht so aus:

    Menue

    cin

    while

    case

    Da ich ja case benutze, darf die Eingabe nur int sein und bei mir nur von 0 - 8 gehen und habe das in der while-Schleife so geloest.

    while(befehl < 0 || befehl > 8)
    .
    .
    

    Jetzt fehlt mir eine ueberpruefung um zu verhindern dass man durch Eingabe eines Strings einen Fehler ausloest.
    Ich hoffe ihr koennt mir da helfen, ich habe auch schon was gefunden, habe aber keine Ahnung wie ich es auf den Berreich von 0 - 8 aendern kann.

    #include <iostream>
    
    using namespace std;
    
    bool eingabe(char *cTemp)
    {
    	int i=0;
    
    	while(cTemp[i] != '\0')
    	{
    		if ( ! ((int)cTemp[i] > 47 && (int)cTemp[i] < 85))
    			return false;
    
    		i++;
    	}
    
    	return true;
    }
    
    int main()
    {
    	char befehl[100];
    	cin>> befehl;
    
    	bool ergebnis = eingabe(befehl);
    
          while(befehl[100] < 0 || befehl[100] > 8)
          {
    	  if( ergebnis == false )
    		{
                 .
                 .
                 }
           }
    
    	return 0;
    }
    

    Villeicht habt ihr ja auch eine bessere Loesung

    MfG
    Coda



  • Erstmal kann deine Überprüfung so nicht funktionieren (besonders da das Element "befehl[100]" nicht mehr zu deinem Array gehört).

    Als Ansatz kannst du die Auswahl des Benutzers als int-Wert einlesen und anschließend den Fehlerstatus von cin kontrollieren (wenn da keine Zahl kam, wird ein Fehler gesetzt) - aber vergiss ein clear() am Ende der Prüfung nicht.

    Oder du liest ein char ein und gibst es an dein switch() weiter (dort kannst du es mit '0', ... vergleichen).
    (char's sind (abgesehen davon, daß sie als ASCII-Zeichen interpretiert werden) ganz normale 8-Bit-Integer-Werte - und damit legal als case-Bedingung verwendbar)


Anmelden zum Antworten