std::cerr oder std::cout
-
Welche Unterschiede gibs da?
-
Das eine ist die Fehlerausgabe und das andere die normale Programmausgabe.
-
std::cerr schreibt auf stderr und ist ungepuffert. std::cout schreibt auf stdout und kann gepuffert sein, bzw. ist es per Default.
Unter Linux z.B. kannst du die Standardausgabe und die Standard-Fehlerausgabe in zwei verschiedene Dateien umlenken.
-
z.B.
std::cout<<"hier error";dann sehe ich auf console diesen Satz.
std::cerr<<"hier error";damit sehe ich diesen Satz auch.
-
std::cout << "Test";
superfetteBerechnungStarten();std::cerr << "Test";
superfetteBerechnungStarten();Bei ersterem siehst du die Ausgabe üblicherweise erst nach der Berechnung. Bei zweiterem sofort.
-
Bei ersterem siehst du die Ausgabe üblicherweise erst nach der Berechnung. Bei zweiterem sofort.
was wär
std::cout<<"Test"<<std::flush;dann soll ich auch sofort sehen
-
std::cerr << f1() << f2() << f3();
entspricht aber:
std::cout << f1() << std::flush << f2() << std::flush << f3() << std::flush;
Abgesehen davon, dass man std::cout auf selbiges Verhalten umschalten kann, handelt es sich bei cerr und cout um zwei verschiedene Ausgabekanäle! Die landen zwar per Default beide auf der Konsole, aber das muss nicht so sein!
-
Leite die Ausgabe deines Programms mal in eine Datei um ("myprog > out.txt"), dann siehst du den Unterschied. cout schreibt in die Datei, cerr sollte trotzdem auf den Bildschirm schreiben.