Dr. Erhard Henkes, Stand: 22.04.2023

Zurück zum Start

 

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.

Zurück zum Start