BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C++ Programlama > Giriş/Çıkış (I/O) işlemleri

Giriş/Çıkış (I/O) işlemleri

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