Über C++ Konsoleninhalt abfragen
Hey zusammen,
ich hab jetzt etwas gesucht aber nichts gefunden. Wie kann ich in C++ abfragen, ob die Konsole voll ist, also die aktuelle Seite? Es soll eine Liste angezeigt werden mit 255 Einträgen aber immer nur soweit das die Seite voll wird und der User muss dann <Enter> um fortzufahren.
Wie immer, danke für die Antworten. Und Entschuldigt meine etwas niedrigen Kenntnisse :/
Gruß Dominic
ich hab jetzt etwas gesucht aber nichts gefunden. Wie kann ich in C++ abfragen, ob die Konsole voll ist, also die aktuelle Seite? Es soll eine Liste angezeigt werden mit 255 Einträgen aber immer nur soweit das die Seite voll wird und der User muss dann <Enter> um fortzufahren.
Wie immer, danke für die Antworten. Und Entschuldigt meine etwas niedrigen Kenntnisse :/
Gruß Dominic
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 334940
Url: https://administrator.de/forum/ueber-c-konsoleninhalt-abfragen-334940.html
Ausgedruckt am: 21.04.2025 um 16:04 Uhr
4 Kommentare
Neuester Kommentar
Windows
OK, dann etwa so:
#include <iostream>
#include <string>
#ifdef UNICODE
# undef UNICODE
#endif
#ifdef _WIN32_WINNT
# undef _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x501
#define WIN32_LEAN_AND_MEAN
#define NOUSER
#define NOSERVICE
#define NOMCX
#define NOIME
#define NOKERNEL
#ifndef NOMINMAX
# define NOMINMAX
#endif
#include <windows.h>
unsigned ConsoleHeight()
{
CONSOLE_SCREEN_BUFFER_INFO csbi = {0};
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
return 1u + csbi.srWindow.Bottom - csbi.srWindow.Top;
}
void Prompt()
{
const std::string prompt = "--- Fortsetzen mit ENTER --- ";
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi = {0};
std::string inp;
GetConsoleScreenBufferInfo(hOut, &csbi); // ... um Cursorposition vor der Promptausgabe festzuhalten
std::cout << prompt;
std::getline(std::cin, inp);
DWORD len = prompt.length() + inp.length(); // Länge der Ausgabe seit Aufruf der Funktion
FillConsoleOutputCharacter(hOut, ' ', len, csbi.dwCursorPosition, &len); // Ausgabe mit Leerzeichen überschreiben
SetConsoleCursorPosition(hOut, csbi.dwCursorPosition); // Cursor an die Ausgangsposition zurücksetzen
}
int main()
{
const unsigned maximum = 255u;
unsigned height = ConsoleHeight() - 1u, // Höhe - 1, damit der Prompt noch darunter Platz hat.
iterations = maximum / height, // Anzahl ganzer "Seiten"
start = 1u,
stop = start + height;
// ganze Seiten ausgeben
for (unsigned i = 0; i < iterations; ++i)
{
for (unsigned j = start; j < stop; ++j)
std::cout << j << std::endl;
Prompt();
start = stop;
stop += height;
}
// restliche Zeilen ausgeben
for (unsigned j = start; j <= maximum; ++j)
std::cout << j << std::endl;
return 0;
}
Hab einfach mal beispielhaft die Zahlen 1-255 runter geschrieben. Keine Ahnung was deine Liste tatsächlich enthält ...
Grüße
rubberman