cout là đối tượng của luồng stdout, trong khi cerr là đối tượng của luồng stderr.
stdout và stderr là các luồng khác nhau, mặc dù cả hai mặc định đều tham chiếu đến đầu ra console. Việc chuyển hướng (piping) một trong chúng (ví dụ program.exe > out.txt) không ảnh hưởng đến cái kia.
Thông thường, stdout nên dùng cho đầu ra thực tế của chương trình, trong khi tất cả thông tin và thông báo lỗi nên in ra stderr, để khi người dùng chuyển hướng đầu ra ra file, các thông báo vẫn in ra màn hình chứ không vào file đầu ra.