Konsolen-Programme mit C++
Argumente hinter Programmname auswerten
Wenn beim Start des Programms Argumente - getrennt durch einen Whitespace - durch einfaches Anhängen hinter den Programmnamen übergeben werden, so möchte man diese innerhalb main() {...} auswerten können. Das gelingt wie folgt:
#include <iostream> #include <limits> void wait() { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get(); } int main( int argc, char *argv[] ) { for( int i=0; i<argc; ++i) { std::cout << i << ": " << argv[i] << std::endl; } wait(); } |
Eingabe: main.exe arg1 arg2
Ausgabe:
0: main.exe
1: arg1
2: arg2
Das erste Argument argv[0] ist immer der Name des
Programms selbst, in diesem Fall main.exe.
Die folgenden Argumente sind die
vom Benutzer angegebenen Kommandozeilenargumente, in diesem Fall arg1 und arg2.
Farbe in der
Konsole
Manche mögen
bereits in der Konsole etwas mehr Komfort, z.B. farbige Texte.
Hier folgt
ein Beispiel, wie man das mit Hilfe von Windows-Funktionen auf einfache Art erledigen kann:
#include <limits> #include <iostream> #define NOMINMAX //wegen Konflikt mit max(). Alternative: #undef max nach windows.h #include <windows.h> //warning: no C++ standard! using namespace std; void wait() { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); std::cin.get(); } void textcolor(unsigned short color=15) { SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), color); } int main() { for (int i=1; i<15; ++i) { textcolor(i); cout << "Hello World!" << endl; } textcolor(); cout << "\nColorless C++ ISO Standard:" << endl; cout << "hello, world" << endl; wait(); } |
Dieses Programm ändert die Textfarbe der
Konsolenausgabe in Windows.
Es verwendet die SetConsoleTextAttribute
Funktion aus der <windows.h> Bibliothek, um die Textfarbe zu ändern.
Die
Funktion textcolor nimmt einen optionalen Parameter color, der die Farbe angibt,
die für den Text verwendet werden soll.
Ohne Parameter wird der Standardwert
15 verwendet.
Im Hauptteil des Programms wird eine Schleife
verwendet, um die Textfarbe von 1 bis 14 zu ändern und “Hello World!” in
verschiedenen Farben auszugeben.
Am Ende wird die Textfarbe auf den
Standardwert gesetzt und eine Nachricht ohne Farbe ausgegeben.
Das Programm sollte wie
erwartet funktionieren, aber es ist wichtig zu beachten, dass es nur unter
Windows funktioniert, denn es verwendet die <windows.h> Bibliothek, die nicht
Teil des C++ Standards ist.