"GotoXY(X,Y)" für C++

Ich habe angefangen die Basics von C++ zu lernen, dabei ist mir jedoch noch kein Befehl aufgefallen, der die Position des Cursors ändert(Turbo Pascal = GoToXY(X,Y)). Da ich mit den Basics noch nicht allzu weit bin, brauche ich den Befehl nur für MsDos-Programme. Es wäre sehr hilfreich für mich, wenn ihr mir helfen würdet.

mfg KingMow
 
Hallo,
also in C gibt es den Befehl: goto;

Dieser ist aber extrem verpöhnt und kennzeichnet meistens schlechten Code.
Darum versucht man dies meistens mit Kontrollstrukturen (Schleifen, IF-Anweisungen) zu lösen.
 
in C++ für Wondows kann man selbst eine Funktion machen, die des selbe wie GOTOXY() macht:

benötigte Header:

Code:
#include <windows.h>

Funktion:

Code:
void gotoXY(int x, int y) {
	HANDLE hStdout; 
	COORD coordScreen = { 0, 0 }; 
	hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 

	coordScreen.X = x;
	coordScreen.Y = y;
	SetConsoleCursorPosition( hStdout, coordScreen );
}
 
Original von Elderan
Hallo,
also in C gibt es den Befehl: goto;

Dieser ist aber extrem verpöhnt und kennzeichnet meistens schlechten Code.
Darum versucht man dies meistens mit Kontrollstrukturen (Schleifen, IF-Anweisungen) zu lösen.

Mir geht es leider nicht um Sprünge im Programmcode während der Ausführung, sondern um Sprünge in der Ausgabe. Da es mir etwas schwer fällt zu erklären was ich meine will ich es mal per Bsp. erklären:

1. Den Text "Dies war Schritt: 1" ausgeben <cout << "Dies war Schritt: 1";>
2. In die nächste Ausgabezeile springen <cout << endl;>
3. Jetzt will ich aber aus der 1 eine 3 machen
dafür muss ich aber mit der Textausgabe
eine Zeile höher und 18 Zeichen nach links.
In Turbo Pascal würde ich das im Code so
hier schreiben: <GoToXY(whereX+18,wherey-1);>
Und dann gebe ich die drei aus: <cout << "3";>

Das Bsp. ist leider etwas blöd :(, aber ich gebe mein bestes!

@ Avenger: Werde mal dein Code ausprobieren - [Edit: Funktioniert.Danke.]

mfg KingMow - Ein großes "Danke" an euch beide.
 
Jedenfalls in Turbo C gibt es auch die Befehle:
Code:
x = wherex();
y = wherey();
gotoxy(x, y);
Müßte auch bei C++ funktionieren.
 
Also ne ganz primitive Möglichkeit währe mit \b zurückzuspringen und die Ausgabe neu zu Schreiben. Ansonsten gibts da IMHO keine ANSI möglichkeit zu -> W32API wie schon angesprochen...
 
Zurück
Oben