Konsolentext in Windows C ausgeben
Native C-Programme, die unter Windows ausgeführt werden, können die Befehlszeilenschnittstelle verwenden, um die Konsolenausgabe anzuzeigen. Wenn der Einstiegspunkt des Programms jedoch als WinMain definiert ist, ist nicht sofort klar, wie die mit Standardausgabefunktionen wie std::cout gedruckten Daten angezeigt werden.
Lösung:
Es gibt mehrere Ansätze, um in diesem Szenario eine Konsolenausgabe zu erreichen:
1. Verwenden einer Umleitungsfunktion:
Implementieren Sie eine benutzerdefinierte Umleitungsfunktion, die Standard-E/A-Streams abfängt und an die Konsole weiterleitet. Hier ist ein Beispiel mit der Win32-API:
guicon.cpp
#include <windows.h> #include <stdio.h> #include <fcntl.h> #include <io.h> #include <iostream> #include <fstream> using namespace std; void RedirectIOToConsole() { int hConHandle; long lStdHandle; FILE *fp; AllocConsole(); GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = MAX_CONSOLE_LINES; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "r"); *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen(hConHandle, "w"); *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); ios::sync_with_stdio(); }
Dann fügen Sie diese Funktion in Ihr Programm ein und rufen Sie sie auf, bevor Sie Standardausgabefunktionen verwenden.
2. Konsolenausgabe in eine Datei umleiten:
Eine andere Möglichkeit besteht darin, die Konsolenausgabe in eine Datei umzuleiten, die dann mit einem Texteditor angezeigt werden kann. Dies kann durch Ändern der Befehlszeile des Programms erfolgen:
program.exe 1>output.txt 2>&1
In diesem Beispiel werden Standardausgabe und Standardfehler in die Datei „output.txt“ umgeleitet.
3 . Verwenden der bedingten Kompilierung:
Wenn Ihr Programm speziell auf Entwicklungs- oder Debugging-Umgebungen abzielt, können Sie die bedingte Kompilierung verwenden, um die Konsolenausgabe nur bei Bedarf einzubeziehen. Beispielsweise können Sie Ihre Konsolenausgabeanweisungen in #ifdef _DEBUG-Blöcke einschließen.
Beispielimplementierung:
test.cpp
#include <iostream> #ifdef _DEBUG int main() { std::cout << "Hello, world!" << std::endl; return 0; } #endif
Standardmäßig gibt dieses Programm nichts aus. Wenn es jedoch mit dem definierten Präprozessormakro _DEBUG kompiliert wird, wird „Hello, world!“ ausgegeben. zur Konsole.
Das obige ist der detaillierte Inhalt vonWie zeige ich die Konsolenausgabe in einem Windows C-Programm mit einem WinMain-Einstiegspunkt an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!