C++ unter Linux Bildschrimbreite ermitteln

wannabe_nerd

Lieutenant
Registriert
Mai 2009
Beiträge
753
Hey Leute,

ich schreibe grad als HA für die Uni ein Programm, welches eine Wertetabelle in der Konsole (unter Ubuntu) ausgibt. Das tut es auch und es läuft wunderbar, nur leider soll das Programm laut Aufgabenstellung erkennen wie breit das (maximierte) Fenster der Konsole ist und dementsprechend ggf. die Ausgabe anpassen.

Nun war meine Überlegung, dass man jetzt "einfach" mittels einer Funktion/Methode aus einer einzubinden Bibliothek/Klasse die aktuelle Fenster- oder zur not auch Bildschirmbreite erfragt.

Für Windows habe ich die windows.h Datei Gefunden, mit der soetwas möglich ist.

Leider habe ich aber für Linux NICHTS im Internet gefunden und jeden den ich bisher gefragt habe konnte mir maximal die erwähnte windows.h nennen.

Könntet ihr mir einen Tipp geben, wie ich mit c++ unter Ubuntu die aktuelle Breite des Bildschirms oder des Konsolenfensters herausbekomme?

lg wannabe_nerd
 
Hi,

mit dem Konsolenbefehl
Code:
echo "columns: $COLUMNS, lines: $LINES"
kannst du Dir die Anzahl der Zeilen und Spalten des Konsolenfensters ausgeben lassen.
In deinem Programm solltest du dann folgendes schreiben:
Code:
string command = "echo $COLUMNS";
        system(command.c_str());
Dies gibt auf dem Bildschirm die Spaltenanzahl aus. Da du ja mit dem Wert arbeiten möchtest, würde ich den in eine Datei schreiben und anstatt obigem das hier ausführen
Code:
string command = "echo $COLUMNS > spalten.txt";
Dann steht in der Datein "spalten.txt" die Anzahl drin.

Es gibt bestimmt noch nen eleganteren Weg den Rückgabewert des Echo-Aufrufs abzufragen, aber den kenne ich im Moment nicht. Ich denke dies sollte aber ein erster Ansatz sein und Dir weiterhelfen.

VG
 
Großartig! Beide Lösungen sind cool^^. Ich habe auf die Schnelle die von grünel mal implementiert und jetzt hab ich schonmal die anzahl der Spalten herausbekommen. Damit lässt sich auf jeden Fall etwas anfangen.

Vielen Dank

lg wannabe_nerd
 

Ähnliche Themen

Zurück
Oben