C++’da, iki farklı giriş/çıkış (I/O) sistemi kullanılabilmektedir:
C++ giriş/çıkış sisteminin temel özelliği nesneye yönelik programlamaya uygun olarak çalışabilmesidir.
C tabanlı giriş/çıkış (I/O) sistemi
Bu sistemde, klavyeden girilen verilerin okutulması ve verilerin ekrana yazılması için, aşağıdaki tabloda gösterilen fonksiyonlar kullanılır:
C tabanlı giriş/çıkış sisteminde kullanılan kütüphane fonksiyonları
Fonksiyon adı | Amacı | Başlık dosyası |
getchar() | Klavyeden girilen bir karakteri okur. | cstdio (stdio.h) |
putchar() | Bir karakteri ekrana yazar. | cstdio (stdio.h) |
getche() | Klavyeden girilen bir karakteri okur (ENTER tuşuna basmaya gerek yoktur). | conio.h |
getch() | Klavyeden girilen bir karakteri okur (Karakter ekrana yazılmaz). | conio.h |
fgets() | Klavyeden girilen karakter dizilerini okur. | cstdio (stdio.h) |
fputs() | Karakter dizilerini ekrana yazar. | cstdio (stdio.h) |
printf() | İlk parametresindeki kontrol dizisi içindeki format tanımlayıcılarına uygun olarak diğer parametrelerinin değerlerini ekrana yazar. | cstdio (stdio.h) |
scanf() | İlk parametresindeki kontrol dizisi içindeki format tanımlayıcılarına uygun olarak diğer parametrelerinin değerlerini klavyeden okur. | cstdio (stdio.h) |
C++ tabanlı nesneye yönelik giriş/çıkış (I/O) sistemi
C++ I/O sistemi akışlar aracılığıyla çalışır. Akış, bilgi üreten veya kullanan mantıksal bir aygıt olarak tanımlanabilir. Bir akış, I/O sistemi tarafından fiziksel bir cihaza bağlanır. Bağlı oldukları gerçek fiziksel cihazlar farklı olsa bile tüm akışların çalışma şekli aynıdır. Tüm akışlar aynı şekilde çalıştığından, aynı I/O fonksiyonları hemen hemen her tür fiziksel aygıtta çalışabilir. Örneğin, bir dosyaya veri yazmak için kullandığımız bir fonksiyonu bir yazıcıya veya ekrana yazmak için de kullanabiliriz.
C++ I/O sistemi fonksiyonları ile sınıf bildirimleri <iostream>
başlık dosyasında yer alır.
I/O sınıf bildirimleri şablon sınıflarla başlar. Bir şablon sınıf tanımlandıktan sonra, biri 8 bitlik karakterler ve diğeri geniş karakterler olmak üzere iki farklı şablon fonksiyonu için yeniden bildirim yapılır.
En sık çalışılan sınıflar, basic_ios sınıfından türetilmiştir. Bu, akış I/O ile ilgili biçimlendirme, hata kontrolü ve durum bilgileri sağlayan üst düzey bir I/O sınıfıdır. Basic_ios sınıfı, basic_istream, basic_ostream ve basic_iostream gibi türetilmiş sınıfların türetilmesinde ana sınıf olarak kullanılır. Bu sınıflar sırasıyla giriş, çıkış ve giriş/çıkış yapabilen akışlar oluşturmak için kullanılır.
C++ I/O sistemi şablon sınıfları
Şablon sınıfı | Türetilen şablon sınıfı |
basic_streambuf | streambuf |
basic_ios | ios |
basic_istream | istream |
basic_ostream | ostream |
basic_iostream | iostream |
basic_fstream | fstream |
basic_ifstream | ifstream |
basic_ofstream | ofstream |
C tabanlı dosya giriş/çıkış (I/O) sistemi
Dosya sistemi farklı donanım elemanları ile çalışma olanağı sağlar. Bu donanım elemanı bir klavye, ekran, disk sürücü veya bilgisayarda kullanılan bir port olabilir.
Dosya giriş çıkış işlemlerinin temelini, bilgisayarı oluşturan aygıtlar için mantıksal bir arabirim görevi yapan, Akış adı verilen bir kavram oluşturur. Genel bir ifade ile, akış bir dosyaya ulaşmak için kullanabileceğiniz mantıksal bir arabirimdir. Ancak burada kullanılan dosya ifadesi, diske kaydedilebilen bir dosyayı ifade etmekle birlikte, ekran ve klavye gibi donanım elemanlarından birini de ifade edebilir. Dosyaların yapıları veya kapasiteleri farklı olabilir, ancak akışların tamamı aynıdır. Bu özellik, donanım elemanlarını benzer şekilde tanımlama olanağı sağlar. Yani, dosya sistemi bu farklı donanım elemanlarını akış vasıtası ile benzer elemanlar gibi kullanabilir. Böylece, disk üzerindeki bir dosyaya yazı yazmak için kullandığınız fonksiyonları, aynı zamanda ekrana ve yazıcıya yazı yazmak için de kullanabiliriz.
C++ tabanlı nesneye yönelik dosya giriş/çıkış (I/O) sistemi
Dosya giriş/çıkış işlemlerini gerçekleştirmek için programlarımızın başına <fstream>
başlık dosyasını eklememiz gerekir. Bu dosyada ifstream, ofstream ve fstream sınıflarının da yer aldığı bazı sınıf bildirimleri yer alır. Bu sınıflar sırasıyla, ios sınıfından türetilen istream, ostream ve iostream sınıflarından türetilmiş olduğundan, ios sınıfı içindeki tüm değişken ve fonksiyonlara erişim sağlayabilirler.
C++ dosya I/O sistemi şablon sınıfları
Ana sınıf | Türetilmiş sınıf | Türetilenden türetilmiş sınıf |
ios | istream | ifstream |
ostream | ofstream | |
iostream | fstream |