Hier ist noch ein Weg wie man so eine Formatierungsfunktion schreiben kann:
http://forum.arduino.cc/index.php?topic=303009.msg2108779#msg2108779
Bündigkeit und Breite sind wählbar
agmue:
Im Beispiel readCSV.ino der Bibliothek SdFat bin ich über diese Zeilen gestolpert:// print in six character wide columns
cout << text << setw(6) << lg << setw(6) << f1 << setw(6) << f2 << endl;
Was dahinter steckt, weiß ich nicht, ob es Dir hilft, auch nicht, aber funktionieren tut es, das habe ich probiert.
Ganz einfach. Die Library hat ein paar Streaming Klassen die den << Operator mehrfach überladen. So werden dann für verschiedene Datentypen unterschiedliche Formatierungs-Methoden aufgerufen. Und jede Funktion gibt das Stream Objekt (also sich selbst) zurück, wodurch diese Verkettung funktioniert.
z.B.:
ostream &operator<< (const char *arg) {
putStr(arg);
return *this;
}
ptrStr() ist dann die eigentliche Ausgabe-Methode
Input Streaming geht auch ![]()
Die Streaming.h Library funktioniert letztlich auch nicht anders, aber verwendet einfach die Arduino Print Klasse:
inline Print &operator <<(Print &obj, const _BASED &arg)
{ obj.print(arg.val, arg.base); return obj; }