C++ istream İşlevleri

C Istream Islevleri



C++'daki 'akış' terimi, program iş parçacığı ve giriş/çıkış arasındaki karakter akışını tanımlar. GÇ aygıtları ve dosyalarında eylemlerin giriş ve çıkışını yapmak için C++ akış sınıfları gereklidir. Bu sınıflar, programın giriş ve çıkışını yönetmek için tasarlanmıştır ve belirli işlevleri vardır.

Akış Sınıfı Hiyerarşisi

Bir C++ sınıfı, içerdiği verileri yönetmek ve yönetmek için gereken yöntemlerden oluşur.

float, double ve sınıflar, int'ye benzer veri türleridir. Veri türü olarak bir sınıfa sahip benzersiz bir değişkene C++ nesnesi denir. Önceden belirlenmiş özel nesneler 'cin' ve 'cout', veri türleri olarak çeşitli sınıflara sahiptir.







'cout'a yazılan veya 'cin'den okunan veriler, C++'daki programlara giren veya programlardan çıkan veri akışlarının örnekleridir. Şu anda, bunun için aşağıdaki dört sınıfı düşünüyoruz:



yayınla
Bu girdi akışı herhangi bir amaca hizmet edebilir. Bir istream örneği cin'dir.



Ostream
Çeşitli kullanımları olan bir çıktı akışıdır. Ostream'ler cout ve cin şeklinde gelir.





eğer akış
Bu, girdi dosyalarının bir akışıdır.

Akışın
Çıktı dosyalarının bir akışıdır. Kalıtım, bazı sınıfların önceden oluşturulmuş diğer sınıfların özelliklerini aldığı C++ gibi nesne yönelimli programlamada yoğun olarak kullanılan bir kavramdır. Ata sınıfları daha sonra yeni özelliklerin dahil edilmesiyle kendi uzmanlıkları haline gelir.



Eğer akış sınıfı
Bir ifstream, bir istream ile aynı şekilde ele alınabilir, ki bu böyledir.

Akış sınıfının
ifstreams işleviyle aynı şekilde, ancak giriş yerine çıkışla, bir ofstream bir çıkış dosyası akışıdır. Bir ofstream, oluşturulduktan, açıldıktan ve hatasız olduğu doğrulandıktan sonra cout ile aynı şekilde kullanılır.

ios sınıfı
Bu sınıftan, tüm akış sınıfları türemiştir. Giriş ve çıkış akışları iki farklı tiptedir.

Akışın ios tabanındaki giriş veya çıkış durumundan bağımsız olan akış bölümlerini tanımlar.

ios bazında tartışılan üyelerin aksine, bu bölümde şablon parametrelerine bağlı olan üyeler anlatılmaktadır.

Akış (giriş)
iostream kitaplığının karmaşıklığı nedeniyle, bu derslerde onu tamamen ele alamayacağız. Ancak, en çok kullanılan işlevleri vurgulayacağız. Bu bölümde, girdi sınıfına çeşitli açılardan bakacağız (istream).

Bir girdi akışından veri elde etmek için çıkarma operatörünün (>>) kullanılacağını öğrendik.

AKTARIM

C++ programlama dilinde, giriş akışı istream sınıfı tarafından işlenir. Giriş, bu giriş akışı nesneleri kullanılarak bir dizi karakter olarak okunur ve anlaşılır. Giriş, cin tarafından işlenir.

Üye Sınıfları

istream::nöbetçi
Birçok görevi yerine getiren ve her giriş prosedürü gerçekleştirildiğinde bir sınıf. Yıkıcısının herhangi bir işlem yapması gerekmez. Ancak uygulamalar, nöbetçi nesnelerin oluşturulması ve yok edilmesini kullanarak tüm girdi işlemleri tarafından paylaşılan akışta ek başlatma veya temizleme görevleri yürütebilir.

Fonksiyonlar

istream::gcount
Nesnenin en son biçimlendirilmemiş giriş eyleminden elde edilen karakter sayısını verir. Biçimlendirilmemiş giriş prosedürleri - get, getline, yoksay, peek, read, read some, putback ve unget - bu işlev tarafından döndürülen değeri değiştirir. Ancak, peeks, geri alma veya geri alma aramanın herhangi bir karakter çıkarmadığını unutmayın. Sonuç olarak, sayı her zaman 0 döndürür.

istream::al
Tek karakter, akıştan bir karakter alır. Karakter, argümanın değeri olarak ayarlanır veya döndürülür (ilk imza) (ikinci imza).

C string: Sınırlayıcı karakter mevcutsa, giriş dizisinden kaldırılmaz, bunun yerine mevcutsa akıştan alınacak aşağıdaki karakter olarak tutulur.

istream::getline
Akıştan karakterleri biçimlendirilmemiş girdi olarak kaldırır ve ayıklanan karakter sınırlayıcı karakter olana veya 'n' karakterleri 's'ye yazılana kadar 's' değişkeninde c-string olarak kaydeder. Ayrıca, dosyanın sonuna ulaşırsa, yöntem karakterleri çıkarmayı durduracaktır.

Dahili olarak, işlev, giriş dizisine erişmeden önce bir nesne oluşturur. Son olarak, geri dönmeden önce nesneyi öldürür, sanki üye yöntemlerinden biri olan sbumpc veya sgetc'yi yürütüyormuş gibi ilişkili akış arabelleği nesnesinden (her şeyin yolunda olduğu varsayılarak) karakterleri ayıklar.

istream::yoksay
Karakterler giriş dizisinden alınır ve 'n' karakter çıkarılıncaya veya bir sınırla eşit olana kadar birer birer atılır. Ek olarak, dosyanın sonuna ulaşılırsa işlev karakter çıkarmayı durdurur. İşlev, bu noktaya çok erken ulaşırsa (n karakter çıkarmadan veya sınırlandırmayı keşfetmeden önce) 'eofbit' bayrağını ayarlar.

Giriş dizisine erişmeden önce, işlev dahili olarak bir nöbetçi nesne oluşturur (noskipws ile doğru olacaktır). Son olarak, dönmeden önce nöbetçi nesneyi öldürür, üye yöntemlerinden birini yürütür gibi (her şeyin yolunda olduğu varsayılarak) ilişkili akış arabelleği nesnesinden karakterleri çıkarır: sbumpc veya sgetc.

istream::operatör>>
Çıkarma operatörü (>>), bu operatörü bir giriş akışına uygular. Fonksiyon olarak çok fazla üyesi vardır.

Aritmetik Türü

Karakterler akıştan çıkarılır ve doğru tipte bir değeri temsil etmek için sırayla ayrıştırılır ve daha sonra “val” değeri olarak kaydedilir. Giriş dizisine erişmeden önce, işlev dahili olarak bir nöbetçi nesne oluşturur (noskipws yanlış olacaktır). Her şey yolunda giderse, akışın dahili durum bayraklarını değiştirirken çıkarma ve ayrıştırma işlemlerini tamamlamak için num get::get komutunu çalıştırır. Nöbetçi nesne, ayrılmadan önce nihai olarak yok edilir.

İşlev, giriş sırasını okumadan önce dahili olarak bir nöbetçi nesne oluşturur, biçimlendirilmiş giriş gerçekleştiriyor olarak görülür. Son olarak, dönmeden önce nöbetçi nesneyi öldürür, üye yöntemlerinden birini, sbumpc veya sgetc'yi yürütüyormuş gibi (her şeyin yolunda olduğu varsayılarak) ilişkili akış arabelleği nesnesinden karakterleri ayıklar.

manipülatörler

pf (*bu) denir, burada pf bir manipülatör olabilir. Manipülatörler, özellikle bu operatör çağrıldığında çağrılmak üzere oluşturulmuş rutinlerdir. Giriş sırası bu prosedürden etkilenmez ve hiçbir karakter çıkarılmaz.

istream::geri yükleme
Geri yüklenen karakter, akıştan alınan son karakterin giriş işlemleriyle bir kez daha çıkarılabilmesi için imleci akışta bir karakter aşağı hareket ettirmeye çalışır.

Giriş dizisine erişmeden önce işlev, dahili olarak bir nöbetçi nesne oluşturur. Ardından, ilişkili akış arabelleği nesnesinde (eğer iyiyse) sputbackc(c) öğesini çağırır. Nöbetçi nesne, ayrılmadan önce nihai olarak yok edilir.

istream::oku
Bir veri bloğu okuyun:

'n' karakterleri akıştan alınır ve ardından 's' ile gösterilen dizide saklanır. Bu işlev, verilerin içeriğini incelemeden veya sonuna boş bir karakter eklemeden yalnızca bir veri bloğunu çoğaltır.

İşlev içinde, giriş dizisine erişilmeden önce bir nöbetçi nesne oluşturulur. Son olarak, dönmeden önce nöbetçi nesneyi öldürür, üye yöntemlerinden birini yürütür gibi (her şeyin yolunda olduğu varsayılarak) ilişkili akış arabelleği nesnesinden karakterleri çıkarır: sbumpc veya sgetc.

Üye sayısını çağırmak, bu işlevin doğru şekilde okuduğu ve sakladığı toplam karakter sayısını döndürür.

istream::okuma
Bu işlev, davranışı büyük ölçüde standart sınıflar için uygulama tanımlı olan akışa bağlı belirli akış arabelleği nesnesinin iç işleyişine bağlıdır.

İşlev içinde, giriş dizisine erişilmeden önce bir nöbetçi nesne oluşturulur. Ardından (başarılıysa), o sayıda karaktere (veya sgetc) kadar ayıklamak için 'sbumpc' çağırmadan önce kaç karakterin artık kullanılabilir olduğunu belirlemek için akış arabelleği nesnesinin uygun olduğu üye işlevini çağırır. Nöbetçi nesne, ayrılmadan önce nihai olarak yok edilir.

istream::seekg
Giriş satırındaki konum, aşağıdaki karakterin giriş akışından nereden alınacağını belirler. Giriş dizisini okumadan önce, işlev dahili olarak bir nöbetçi nesnesi oluşturur. Ardından (Tamam ise), ilgili akış arabelleği nesnesine iki çağrıdan birini yapar: pubseekpos (1) veya pubseekoff (2), (Varsa). Son olarak, nöbetçi öğeyi yok eder ve yola çıkar.

istream::sync
Giriş arabelleğini hizalayın:

Bağlantılı akış arabelleğinin kontrollü giriş sırasını eşitlemeye getirir. Akışa bağlı akış arabelleği nesnesinin özel uygulaması, işlemin özelliklerini belirler.

istream::tellg
Giriş dizisinin konumunu alın:

Mevcut karakterin giriş akışındaki konumunu verir. İşlev daha sonra -1 değerini döndürür. Üye başarısız olursa, true değerini döndürür.

Değilse (0,cur,in) rdbuf()->pubseekoff döndürür. Nöbetçi nesne, ayrılmadan önce nihai olarak yok edilir.

istream::unget
Karakteri kaldır:

Akıştan alınan son karakterin giriş işlemleriyle bir kez daha alınabilmesi için imleci akışta bir karakter aşağı hareket ettirmeye çalışır.

Üye olmayan

operatör>> (istream)
Çıkarma operatörü (>>), bir giriş akışına uygulandığında bu eylemle biçimlendirilmiş giriş sağlar.

Bir karakter: Karakter dizisi, bir sonraki karakteri çıkarır ve onu “c” değeri olarak saklar. is'den karakter çıkarma ve bunları c-string olarak s'de saklama işlemi, bir boşluk karakteriyle karşılaşıldığında veya (genişlik ()-1) karakterleri çıkarıldığında (genişlik sıfır değilse) durur.

Değerin çıkarılması: değerlerden çıkarma ile aynı sonuca sahip olan değer istream nesnelerinden çıkarılmasını sağlar: is>>Val'i çağırır.

örnek 1

Bu durumda kullanıcıdan nasıl bir değer elde edebileceğimizi inceler ve sonuç olarak ekranda gösterirdik.

#include
kullanarak ad alanı standart ;
int ana ( )
{
int Numara ;
cout << 'Lütfen bir numara giriniz ' ;
yemek yiyor >> Numara ;
cout << 'Girilen değer: ' << Numara << ' \n ' ;
}

başlık dosyasını eklerdik. Ardından, standart ad alanında 'std' ad alanını kullanacağız. main() fonksiyonunu çağırırdık. Bu metot içerisinde “no” isimli bir değişken bildirilecektir. Bu değişken için 'int' veri türü temsil edilir. 'int' terimi bir tamsayının kısaltmasıdır. Daha sonra 'cout' ifadesi kullanılır. Bu komut satırı yazdırır.

Bu metin ekranda görüntülendikten sonra kullanıcı herhangi bir rastgele değer girecektir. O zaman “cin” ifadesi kullanılmış olurdu. Bu komut, kullanıcının değeri belirtmesini gerektirir. Kullanıcının girdiği numara bir değişkene kaydedilir. Kullanıcı tarafından sağlanan değer, 'cout' komutu kullanılarak ekranda görüntülenecektir.

Örnek 2

Bu örnekte, kullanıcıdan herhangi bir ismi nasıl alacağımızı görecek ve ardından sonuç olarak ekranda gösterecektik.

#include
kullanarak ad alanı standart ;

int ana ( )

{

karakter isim [ 125 ] ;
cout << 'Adınızı giriniz' << son ;


yemek yiyor >> ws ;

yemek yiyor . hat almak ( isim, 125 ) ;

cout << isim << son ;

dönüş 0 ;

}

başlık dosyasını dahil edeceğiz. Ardından, standart ad alanını 'std' olarak kullanacağız. main() işlevini çağırırdık. Bu metot içerisinde bir değişken tanımlayacağız. Bu değişken 'char' veri türünü tutar. Daha sonra 'cout' ifadesi kullanılır. Bu komut ekranda 'Adınızı girin' metnini gösterir. Bu metni ekranda görüntüledikten sonra kullanıcı herhangi bir isim girecektir. Ardından, 'cin' ifadesini kullanırdık.

Bu komut, değeri kullanıcıdan alır. Sağlanan ad, bir 'ws' değişkeninde saklanır. Burada yine 'cin' komutunu kullanacağız. Bu komut içerisinde getline() fonksiyonu uygulanmaktadır. Bu fonksiyon, kullanıcı tarafından girilen adı ve adın uzunluğunu içeren parametreyi içerir. Kullanıcı tarafından sağlanan adı göstermek için 'cout' komutu kullanılacaktır. Kodu sonlandırmak için 'return 0' komutu kullanılacaktır.

Çözüm

İlk olarak, C++ istream fonksiyonlarının ne olduğundan bahsettik. Ardından, bahsedilen birkaç işlevi ve önemli tanımları gözlemliyoruz. Bu yazıda, çeşitli istream işlevleri içeren farklı kodlar çalıştırdık. İlk kodda kullanıcıdan herhangi bir numara alıyoruz ve o numarayı ekranda gösteriyoruz. İkincisinde, kullanıcı adı girdi ve ekrana o adı yazdırdı.