cout เป็นออบเจ็กต์ของสตรีม stdout ในขณะที่ cerr เป็นออบเจ็กต์ของสตรีม stderr
stdout และ stderr เป็นสตรีมที่แตกต่างกัน แม้ว่าทั้งคู่จะอ้างถึงเอาต์พุตคอนโซลตามค่าเริ่มต้น การเปลี่ยนเส้นทาง (ไปป์) อย่างใดอย่างหนึ่ง (เช่น program.exe>out.txt) จะไม่มีผลกับอีกรายการหนึ่ง
โดยทั่วไป stdout ควรใช้สำหรับเอาต์พุตของโปรแกรมจริง ในขณะที่ข้อมูลและข้อความแสดงข้อผิดพลาดทั้งหมดควรพิมพ์ไปที่ stderr เพื่อที่ว่าหากผู้ใช้เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ ข้อความข้อมูลจะยังคงพิมพ์อยู่บน หน้าจอและไม่ใช่ไฟล์ที่ส่งออก