String auf Zahlen und Buchstaben prüfen



  • Hallo,

    ich möchte gerne in meiner Anwendung eine Uhrzeit angeben lassen. Diese Zeit soll z.B so aussehen: 08:00. Da ich ein Doppelpunkt als Eingabe zulassen, muss ich prüfen, ob die Eingabe korrekt war. Das Programm soll nur eine korrekte Zeitangabe zulassen, also prüfen ob z.B ac:30 als Uhrzeit angegeben wurde und diese Eingabe bemängeln.

    Wie kann ich den String prüfen, ob nur Zahlen enthalten sind?
    Ich hole mir die linken zwei Zeichen des Strings so (die rechten zwei Zeichen genau so):

    CString strTemp;
    int nTemp=0;
    strTemp = strUhrzeit.Left(2);
    nTemp = atoi(strTemp);
    

    Wie kann ich diese zwei Zeichen darauf prüfen, ob nur Zahlen eingegeben wurden?
    Vielen Dank schonmal



  • bool checkisnummeric(CString checkstring)
    {
    
    for( int i=0; i<=checkstring.GetLength()-1; i++)
    {
    
      TCHAR z = checkstring[i];
      if( isdigit(z))
      {
      }
      else
    	  return false;
    } 
    
    return true;
    
    }
    


  • Super, vielen Dank für die ausführliche Hilfe



  • Oder mit MFC Bordmitteln: (allerdings nicht besonders performant)

    bool checkisnumeric(CString const & checkstring)
    {
        return checkString.SpanIncluding(_T("0123456789")) == checkstring;
    }
    


  • user schrieb:

    bool checkisnummeric(CString checkstring)
    {
    
    for( int i=0; i<=checkstring.GetLength()-1; i++)
    {
    
      TCHAR z = checkstring[i];
      if( isdigit(z))
      {
      }
      else
    	  return false;
    } 
    
    return true;
    
    }
    

    Da bleibt von der B-Note aber nicht viel übrig 😉

    bool checkisnumeric(CString const & checkstring)
    {
       for( int i=0; i < checkstring.GetLength(); ++i)
           if (!isdigit(checkstring[i])
               return false;
       return true;
    }
    


  • Doch bleibt es denn wenn jemand so eine Frage stellt dann ist es einfacher für ihn meinen Code nachzuvollziehen und zu verbessern als Deinen.
    IN meinem ist jeder Schritt für eine Anfänger sofort erkennbar.
    Deiner ist natürlich professioneller und mache ich ja auch so.
    Bei einer Antwort muss man aber immer vom Kenntnisstand des Fragers ausgehen.



  • Ihr habt mir beide sehr geholfen, vielen Dank 🙂


Anmelden zum Antworten