Ich probiere mal das mit dem überschreiben mit einer Null aus. Danke schonmal. ^^
€dit: Leider funktioniert es nicht, eine \0 anzuhängen... Aber ihr habt mih auf eine idee gebracht..^^
€d2:
Iwie kann er jetzt einmal die Backspace Taste benutztn..es funktioniert. aber wenn ich sie zweimal hinternander Drücke..Unsinn... ich verscuhe mal eben eine Fnktion zu schreiben, die einen String kürzt... hab da sone..idee..^^
passiert an sich noch nichts. currentstring wird zwar mit einem String, der ein Zeichen weniger am Ende hat überschrieben, doch das letzte Zeichen bleibt bei currentstring erhalten. Am besten ersetzt du das hinterste Zeichen durch ein Leerzeichen [...]
...
Wieso sollte da nichts passieren ? substr gibt ein neues stringobjekt zurueck, wodurch von currentstring der operator= aufgerufen wird, und der inhalt ordnungsgemaess ersetzt wird.
Ich hab das ganze mal mit einem simplen Programm getestet ..
und damit funktioniert das abschneiden ...
Wo dein genaues Problem liegt weiss jetzt auch auf anhieb nicht, da ich deinen code nicht compilieren kann. conio.h IST BOESE, denn das ist nicht im C(++) Standard enthalten und bei der gcc damit nicht dabei. Ausserdem ist es nicht plattformunabhaengig. Verwende fuer sowas vielleicht lieber ncurses ...
[03:22 Uhr] Ich hab noch ne idee, woran es liegen koennte ...
Da du conio.h verwendest, denke ich mal, du arbeitest unter Windows ...
Unter windows ist das Zeilenendezeichen #10#13, also \r\n und nicht nur #13, wie unter linux. Dadurch kann es sein, dass du, da du nur auf #13 pruefst als letztes Zeichen ein #10 an deinem String anhaengst. oder sowas ... vielleicht solltest du nur Zeichen an den String anhaengen, die >=32 sind ... einen Test ist es wohl wert.
[08:54 Uhr] OK, jetzt ist es amtlich - man sollte malt nicht um halb vier in der Nacht Ratschlaege erteile, wenn man um hal sechs erst ins Bett kommt und um halb neun schln aufstehen muss. Das Problem ist recht einfach ... du ueberschreibst zwar den String, den du bereits eingegeben hast korrekt und auch in deiner Variablen ist der String korrekt lang, ABER du ueberschreibst ihn ja nicht am BILDSCHIRM. Wenn du mit \r an den Zeilenanfang springst, bleibt ja der Rest der Zeile weiterhin zu sehen und du lueberschreibst immer nur den Zeilenanfang, weshalb es so aussieht, als wuerdest du mit dem Cursor nach links gehen, wenn du backspace drueckst. Eine simple Loesung des Problems waere es, wenn du an den Zeilenanfang mit \r springst, die ganze Zeile loescht (ncurses verwendet dazu clrtoeol siehe `man curs_clear`, conio.h wird etwas aehnliches haben) udn erneut mit \r an den Zeilenanfang springst und deinen String ausgibst.
Wieso sollte da nichts passieren ? substr gibt ein neues stringobjekt zurueck, wodurch von currentstring der operator= aufgerufen wird, und der inhalt ordnungsgemaess ersetzt wird.
...
Stimmt, das Nullzeichen erscheint ja damit eine Stelle weiter vorne...
Ich hab wohl dringend noch Nachholbedarf, noch 4 Wochen bis wir mit Java beginnen.