Warum klappt´s net? II.



  • Hallo. Also wieder die Frage, warum klappt es nicht!?

    void String::trim() {
    
        char *p = value;
        int c = 0;
        while (p[c] <= 32) c++;
        char* buffer = new char[getLength()-c];
        int c2 = 0;
        for (int i = 0; i < getLength(buffer); i++) { buffer[i] = p[c++]; c2++; }
        buffer[c2] = '\0';
        c--;
        while (p[c] <= 32) { c--; c2--; }
        buffer[c2] = '\0';
        value = buffer;
        length = getLength(value);
    }
    
    void String::trim(char toTrim) {
    
        char *p = value;
        int c = 0;
        while (p[c] == toTrim) c++;
        char* buffer = new char[getLength()-c];
        int c2 = 0;
        for (int i = 0; i < getLength(buffer); i++) { buffer[i] = p[c++]; c2++; }
        buffer[c2] = '\0';
        c--;
        while (p[c] == toTrim) { c--; c2--; }
        buffer[c2] = '\0';
        value = buffer;
        length = getLength(value);
    }
    

    Also, eigentlich müssten die Methoden nach meinem Verständis gleich arbeiten, der einzige Unterschied dürfte sein, dass die eine Methode nur Whitespacezeichen "abschneidet" und die andere jegliche Art von Zeichen. Aber dass ist nicht so. Die Methode trim(char) schneidet den übergebenen char irgendwie nur vorne, aber nicht hinten ab!

    [EDIT] value ist vom Typ char*. [/EDIT]

    [ Dieser Beitrag wurde am 17.04.2003 um 16:56 Uhr von Pogo editiert. ]


Anmelden zum Antworten