++C در مورد عملیات ورودی و خروجی و فایل را به این صورت عمل می کند که آن ها را به صورت صورت جریانی از بایت ها انجام می دهد. یک جریان (stream) یک دنباله از بایت ها است که هر بایت نشان دهنده یک کاراکتر است. جریان ورودی بایت هایی را از دستگاه ورودی، معمولا صفحه کلید یا یک فایل روی دیسک دریافت می کند. جریان خروجی بایت هائی را به صفحه نمایش، چاپگر یا فایل می فرستد.
برنامه باید ارتباطی بین جریان و یک فایل معین روی دیسک برقرار کند. به عبارت دیگر یک جریان مربوط به فایل باید قبل از استفاده باز شود. بعد از باز کردن فایل می توان اطلاعات را از فایل خواند یا درون فایل نوشت. هر فایل باز شده یک اشاره گر فایل دارد که بر اساس تعداد بایت هائی که از ابتدای فایل خوانده یا نوشته شده است موقعیت درون فایل را مشخص می کند. دسترسی به فایل باعث می شود این اشاره گر بهنگام شود.
دو نوع دسترسی به فایل وجود دارد: ترتیبی و تصادفی. در دسترسی ترتیبی (sequential access) داده ها از فایل به ترتیب از ابتدا تا انتها خوانده می شوند. فایل با دسترسی مستقیم یا تصادفی (random access) اجازه می دهد اشاره گر فایل به هر نقطه مورد نظر در فایل پرش کند.
یک جریان فایل می تواند در دو مد متن (text) یا باینری (binary) باز شود. یک فایل متن شامل مجموعه ای از خطوط است. هر خط شامل مجموعه ای از کاراکترهاست که به کاراکتر انتهای خط (newline) ختم می شود (کاراکترهای با کد اسکی ۱۰ و ۱۳). ماکزیمم طول هر خط ۲۵۵ کاراکتر است.
نکته. بخاطر داشته باشید هر خط یک رشته منتهی به کاراکتر NULL نیست بلکه به کاراکتر انتهای خط ختم می شود.
فایل های مسطح متنی نوعی فایل ترتیبی هستند. ++C با این فایل ها به صورت دنباله ای از بایت ها برخورد می کند، فایل های ترتیبی ساختار اضافی ندارند هرساختار اضافی باید توسط برنامه تحمیل شود. راهی برای گردش در فایل های ترتیبی وجود ندارد، فایل همیشه باید از ابتدا شروع شود.
فایل باینری داده ها را به همان فرمتی که در حافظه اصلی نمایش داده می شوند روی دیسک ذخیره می کند. بنابراین مانند فایل های متن اعداد به کاراکتر تبدیل نمی شوند. اگر فایل باینری در یک ادیتور متن باز شود اعداد به صورت کاراکترهای نامفهوم نمایش داده می شوند. فایل های باینری از هیچ نشانه ای برای جدا کردن خطوط داده ای استفاده نمی کنند.