Die Funktion std::cerr
aus der Standardbibliothek ist dafür gedacht Fehler in einem Konsolenprogramm auszugeben. Hierbei gibt es entscheidende Unterschiede zu std::cout
. Die Ausgaben eines Konsolenprogramms können mit dem Parameter > (Beispiel: programm.exe > ausgabe.txt) in eine Datei umgeleitet werden. Wenn das Programm so ausgeführt wird, werden die Strings, die mit std::cout
ausgegeben werden nur in die Datei geschrieben, aber nicht mehr in der Konsole angezeigt. Ausgaben, die mit std:cerr
erzeugt werden, werden dagegen noch in der Konsole angezeigt und in die Datei geschrieben. So erfolgt eine saubere Trennung von Ergebnisausgaben und Fehlerausgaben. So eine Trennung kann auch helfen, um ein Programm evtl. auch in automatisierten Skripten verwenden zu können. Ein weiterer Unterschied ist, dass std::cerr
nicht gepuffert wird.
#include <iostream>
#include <cstdlib>
int main()
{
std::cout << "Mein erstes Programm\n"
<< "Eine zweite Zeile\n\n";
std::cerr << "Programm fertig!\n";
return EXIT_SUCCESS;
}
Das Beispiel würde bspw. nur “Programm fertig!” in der Konsole anzeigen, wenn man die Ausgabe in eine Datei umleiten würde.
Zusammenfassend bedeutet dies also:Nähere Informationen zu diesem Thema findet ihr hier: https://en.cppreference.com/w/cpp/io/cin