Taslak bir C ++ 17 standart belgesinden:
30.4.3 Dar akış nesneleri [dar.stream.objects]
istream cin;
1 cin
Nesne stdin
, <cstdio>
(30.11.1) 'de açıklanan nesne ile ilişkili bir akış arabelleğinden gelen girdiyi kontrol eder .
2 Nesne cin
başlatıldıktan sonra cin.tie()
geri döner &cout
. Aksi takdirde durumu basic_ios<char>::init
(30.5.5.2) için gerekli olanla aynıdır .
ostream cout;
3 cout
Nesne stdout
, <cstdio>
(30.11.1) 'de açıklanan nesne ile ilişkili bir akış arabelleğine çıktıyı kontrol eder .
ostream cerr;
4 cerr
Nesne stderr
, <cstdio>
(30.11.1) 'de açıklanan nesne ile ilişkili bir akış arabelleğine çıktıyı kontrol eder .
5 Nesne cerr
başlatıldıktan sonra cerr.flags() & unitbuf
sıfırdan farklıdır ve cerr.tie()
geri döner &cout
. Aksi takdirde durumu basic_ios<char>::init
(30.5.5.2) için gerekli olanla aynıdır .
ostream clog;
6 clog
Nesne stderr
, <cstdio>
(30.11.1) 'de açıklanan nesneyle ilişkili bir akış arabelleğine çıktıyı kontrol eder .
Tartışma...
cout
yazıyor stdout
; cerr
ve clog
hiçstderr
Standart Çıkış ( stdout
), programdan, son kullanıcıya gösterilebilen veya başka bir işleme aşamasına aktarılabilen başarılı işlemden elde edilen çıktı gibi hatasız, tanısal olmayan çıktı almayı amaçlamaktadır.
Standart Hata ( stderr
), programın kullanıcının bekleyebileceği çıktıyı üretmediğini veya üretmediğini belirten uyarı ve hata mesajları gibi tanılama çıktıları için tasarlanmıştır. Bu girdi, çıktı verileri başka bir işlem aşamasına aktarılsa bile son kullanıcıya görüntülenebilir.
cin
ve cerr
bağlıcout
Her ikisi de cout
G / Ç işlemlerini kendileri yapmadan önce yıkar . Bu, gönderilen komutların cout
program bloklarından önce okunmasını sağlar cin
ve önceki çıktının, cout
bir hata yazılmadan önce yıkanmasını cerr
sağlar; vb..
Bu, clog
- eğer orada yazarsanız, arabelleğe alınmaz ve hiçbir şeye bağlı değildir, bu nedenle, temizlemeden önce makul büyüklükteki günlükleri arabelleğe alacaktır. Bu, mesajların en yüksek verimini verir, ancak mesajların, uçbirimi okuyan veya günlüğü takip eden bir tüketici tarafından hızlı bir şekilde görülemeyebileceği anlamına gelir.
stdout
,stdin
(içincin
) vestderr
varsayılan olarak kullandığı , bilgisayar tarafından tanınan bir akışı vardır . Sanırımclog
sadececerr
geçici bir değişiklikle.