ASCII-Escapesequenz aus String
-
Ich versuche gerade eines meiner kleineren Windowsprogramme auf Linux zu portieren. Jedoch soll die Kompatibilität auf Windows auch weiterhin gewährleistet werden. Nun soll an einer bestimmten Stelle die Farbe der Ausgabe verändert werden. Unter windows mache ich das über die Funktion SetConsoleTextAttribute() auf Linux ist es ja möglich dies über die Escape-Sequenzen zu erreichen. Um den Code ohne Änderungen auf Windows und Linux ausführen zu können, habe ich eine Funktion SetColor(int front, int back) geschrieben, die auf Windows so aussieht:
void SetColor(int fcolor, int bcolor) { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, bcolor*16+fcolor); }
Auf Linux jedoch stehe ich vor dem Problem, aus einem String eine Escapesequenz zu erzeugen.
Wie kann man das erreichen, oder gibt es Alternativen, um die Konsole zu färben?mfg D3lta
-
Wenn du plattformübergreifend programmieren willst, würde ich plattformübergreifende Bibliotheken nutzen.
Z.B. ncurses, ursprünglich Unix, gibt es auch für Windows.
-
Mit der WinAPI habe ich bisher gute Erfahrungen gemacht, doch mit ncurses kenne ich mich überhaupt nicht aus, denn ich bin erst vor kurzem auf Linux umgestiegen . Das Programm ist auf Windows eigentlich schon lange fertig und ich wollte es auf Linux portieren, ohne den Quellcode auf Windows groß aubzuändern.
mfg D3lta
-
D3lta schrieb:
auf Linux ist es ja möglich dies über die Escape-Sequenzen zu erreichen.
Das Problem dabei ist, dass eben jene Escape-Sequenzen von Terminal zu Terminal unterschiedlich sind. Deshalb ist die Verwendung einer Bibliothek wie ncurses sehr empfehlenswert, damit man sich nicht selbst mit den Feinheiten der verschiedenen Terminals auseinander setzen muss.