unplanmäßige if-Blockausführung



  • Hallo. Also ich habe da eine Stringklasse mit etlichen Methoden. Alle MEthoden dieser Klasse funktionieren einwandfrei. Und mit Hilfe dieser Klasse will ich eine StringTokenizer-Klasse schreiben. Nun überprüfe ich ob ein bestimmter String mit dem delimter, in diesem Fall "x", änfängt oder nicht usw.. Hier der Code:

    if (!string.startsWith(""+del) && !string.endsWith(""+del)) {
    		if (string.startsWith("x")) cout << "string starts with \"x\".\n";
    	    if (string.endsWith("x")) cout << "string ends with \"x\".\n";
    		numberOfTokens += 1;
    		cout << "numberOfTokens += 1\n";
        } else if (!string.startsWith(""+del) && string.endsWith(""+del)) {
    
    	} else if (string.startsWith(""+del) && !string.endsWith(""+del)) {
    
    	} else if (string.startsWith(""+del) && string.endsWith(""+del)) {
    		if (string.startsWith("x")) cout << "string starts with \"x\".\n";
    	    if (string.endsWith("x")) cout << "string ends with \"x\".\n";
    		numberOfTokens -= 1;
    		cout << "numberOfTokens -= 1\n";
    	}
    

    Also das ist ein Teil des codes. Nun wird aber unerklärlicher Weise der erste Block ausgeführt, obwohl er das ja nur soll, wenn der string nicht mit dem delimiter beginnt und nicht mit ihm endet, was ich ja auch durch die beiden ifs in disem Block bestätigt bekomme. Also es wird dieser Block ausgeführt, obwohl der string nicht mit dem delmiter beginnt, warum?



  • Ok, Problem erkannt. Es war das ""+del.


Anmelden zum Antworten