Zeichenlänge eines Strings (Unicodestrings) ermitteln



  • Hallo wie kann ich die Länge eines Strings ermitteln
    Versucht hab ich:

    this->path.Length()
    


  • Hallo

    ja, und?

    bis bald
    akari



  • Na das funzt nicht, weil es null liefert, obwohl garantiert was drinn steht. Brauch aber unbedingt die Länger des Strings, weil ich das letzte Zeichen kennen muss!



  • Hallo

    Dann machst du etwas falsch, was du hier im Forum nicht beschrieben hast. Lenght jedenfalls ist genau die richtige Methode dafür.

    bis bald
    akari



  • Ok hab den Fehler gefunden.
    Ich muss die länge vorher in einer Integer Var speichern und kann sie nicht sofort als ArrayIndex nutzen.
    Der Grund, warum ich das eigentlich wissen wollte, war, dass ich prüfen muss ob das Letzte Zeichen dieses Strings ein \ bzw \\ ist
    Folgender code sagt nein, obwohl ein \ am ende des strings vorhanden ist:

    int length = this->path.Length();
    if(this->path[length -1] == (wchar_t)"/" || this->path[length-1] == (wchar_t)"\\")
            {
            return true;
        }else {
            return false;
        }
    


  • Hallo

    Deine Konvertierung des Char-Literals ist falsch.
    Richtig ist es so :

    this->path[length -1] == L'/'
    

    bis bald
    akari



  • int length = this->path.Length();
    if(this->path[length -1] == L"/" || this->path[length-1] == L"\\")
            {
            return true;
        }else {
            return false;
        }
    

    Da sagt er mir

    Konvertierung vin 'wchar_t' nach 'const wchar_t *' nciht möglich

    😕



  • Hallo

    Deine Konvertierung des Char-Literals ist falsch.
    Richtig ist es so :

    this->path[length -1] == L'/'
    

    bis bald
    akari



  • Ach Mist, hab übersehen das man ' statt " nehmen muss.
    Jetzt geht es zwar, aber ich muss immer C:\\ eigeben um ein true zu bekommen. Ziel war es jedoch C:\ eingeben zu können...



  • Hallo

    Da path ein (Ansi/Unicode-)String ist, beginnt die Zählung der Zeichen bei 1 und nicht bei 0. Deshalb erwischt du das letzte Zeichen nicht bei Length -1, sondern bei Length. Das ist ein grober Unterschied zu der normalen Arrayindizierung von C++ und stammt aus dem Delphi-Erbe.

    bis bald
    akari



  • Danke dir, jetzt funktioniert es.
    Finde es aber inkonsequent, dass man manchmal bei null anfängt zu zählen und dann plötzlich wieder nicht


Log in to reply