Warum ldc.clear() nicht richtig funktioniert, kann ich dir nicht sagen. Möglicherweise liegts an der Bibliothek, die du verwendest.

Aber ansonsten macht man das so, ja. Der Sinn von lcd.setCursor() ist es ja eben, dass nicht jedes Mal das ganze Display neu beschrieben werden muss. Wenn du willst, kannst du deine Vorgehensweise noch verfeinern, indem du nur die Stellen, die auch wirklich mit was beschrieben sind, mit Leerzeichen füllst. Das ist noch was schneller- wirst du praktisch aber kaum merken.

Übrigens: meistens haben die Controller der LCD-Displays die Möglichkeit, eigene Zeichen zu definieren (ich glaube, bis zu acht, ist ewig her dass ich mit so nem Ding hantiert hatte), so dass man auch öüä anzeigen kann.