فایل باینری چیست؟
یک فایل باینری، فایلی هست که در آن داده ها به صورت بایت ها ذخیره می شن. بنابراین واحد اولیه داده ها معمولن به صورت پیش فرض به اندازه ی هشت بیت (یک کاراکتر character) هست. در واقع همه ی انواع داده ها در رایانه به صورت دودویی (باینری) هستند. زمانی که ما می خواهیم یک متن ساده را بر روی حافظه ذخیره کنیم، اتفاقی که می افتد این هست که داده ها می بایست ابتدا به متن ساده تبدیل شوند و سپس ذخیره شوند. حال آن که بخشی از این داده ها که تبدی می شوند واقعن لازم نیست اند؛ مثلن یک عدد صحیح (integer) بین دو تا چهار بایت هست که معمولن (بسته به بزرگی عدد) برای ذخیره آن یک بایت (هم اندازه ی یک کاراکتر) کافی هست. به علاوه در حین تبدیل ممکن است دقت را از دست بدهیم؛ مثلن در مورد عددهای اعشاری (double) این اتفاق می افتد چون معمولن تعداد اعشاری که در متن ساده نوشته می شوند کمتر از دقت واقعی متغییر هستند. وحال اگر بخواهیم این متن ساده را زمانی دیگر به عنوان ورودی برنامه استفاده کنیم بخشی از دقت را از دست داده ایم.
خواندن و نوشتن به صورت باینری
خواندن و نوشتن در باینری تفاوت هایی با متن های ساده دارد. برای مثال وقتی یک فایل باینری باز می شود، برای خواندن، مکان شروع و طول جمله ای که باید خوانده شود را می بایست خودِ برنامه نویس تعریف کند (در واقع برنامه نویس بایستی بداند که داخل فایل چه داده ای با چه شکل و ترتیبی نوشته شده است. به صورت پیش فرض واحد خوانش و نگارش یک کاراکتر هست). مشکل سازگاری یک فایل باینری از یک ماشین به ماشین دیگر هم ممکن است از همین جا باشد. چنانکه مثلن تعریف ابتدا و انتهای یک فایل ممکن است در دو ماشین متفاوت باشد و در نتیجه مکان نما در جای اشتباهی قرار گرفته باشد و در نتیجه فایل باینری در ماشین جدید قابل خواندن نباشد. در فایل باینری مفهمومی مثل پایان خط (end line) و فاصله (space) وجود ندارد.
برای نوشتن کاراکترها به صورت باینری تنها نام و اندازه ی کاراکتر لازم هست. برای مثال دستور زیر یک کاراکتربا نام Name و اندازه ی ده را به صورت باینری ذخیره می کند:
و برای خواندن
- نوع کلاس برای نوشتن و خواندن متفاوت است.
- نام فایل بعد از نام کلاس همان اسمی هست که همه جا در طول برنامه شناخته می شود. اما این نام می تواند متفاوت از نام فایلی باشد که ذخیره می شود.
- اولین عبارت در داخل پرانتر نام فایلی هست که داده ها در آن ذخیره خواهند شد یا از آن خوانده خواهند شد.
- بعد از اسم فایل مشخصه ورودی-خروجی بودن آمده است. ورودی-خروجی بودن یک فایل بسته به نوع کلاسی هست که استفاده شده. مثلن برای خواندن از ios::in استفاده شده است.
- علامت جدا کننده.
- نوع فایل (باینری) تعریف شده است.

