Die letzten Zeichen von char*



  • Hallo!

    Ich möchte wissen, ob die letzten vier Zeichen eines char* ".txt" sind.

    Wie kriegt man das hin?

    Danke schon mal!



  • Indem du Rückwärts suchst und dann guckst ob die letzten Zeichen so lang sind wie das gesuchte Wort bzw. ob die Position an der Position String-Länge minus gesuchte String-Länge ist:

    bool endsWith(std::string const &s, std::string const &end) {
    	return s.rfind(end) == s.length()-end.length();
    }
    

    Edit: Oh, hab übersehen das es sich um char* handelt. Aber eigentlich kannst du das ja auch in einen string konvertieren, wenn du es schon mit C++ machst und dann o.g. Lösung verwenden. Ansonsten Setz einen Zeiger auf die Position im string abzüglich der Länge des gesuchten Strings und mach einen Gleichheitstest:

    bool endsWith(char const *s, char const *end) {
      size_t szEnd = strlen(end);
      size_t szStr = strlen(s);
      if(szStr>=szEnd) {
        char const *p = &s[szStr-szEnd];
        return strcmp(p, end) == 0;
      }
      return false;
    }
    

    Greetz


Anmelden zum Antworten