Aracılığıyla paylaş


basic_streambuf Sınıfı

Bir akışın belirli bir gösterimine ve akışın belirli bir gösteriminden öğelerin iletimini denetleyen bir akış arabelleği türetmeye yönelik soyut bir temel sınıfı açıklar.

Sözdizimi

template <class Elem, class Tr = char_traits<Elem>>
class basic_streambuf;

Parametreler

Elem
bir char_type.

Tr
Karakter traits_type.

Açıklamalar

Sınıf şablonu, bir akışın belirli bir gösterimine ve akışın belirli bir gösteriminden öğelerin iletimini denetleyen bir akış arabelleği türetmeye yönelik soyut bir temel sınıfı açıklar. sınıfının basic_streambuf bir nesnesi, karakter özellikleri traits_type olarak da bilinen sınıf char_traits tarafından belirlenen char_type olarak da bilinen Tr türündeki öğelerle bir akışı denetlemeye yardımcı olur.

Her akış arabelleği kavramsal olarak iki bağımsız akışı denetler: biri ayıklamalar (giriş) ve biri eklemeler (çıkış) için. Ancak belirli bir gösterim, bu akışlardan birini veya her ikisini de erişilemez hale getirebilir. Genellikle iki akış arasında bir ilişki sürdürür. Örneğin, bir basic_stringbufElem< nesnesinin Tr> çıkış akışına eklediğiniz şey, daha sonra giriş akışından ayıkladığınız öğedir. bir basic_filebufElem< nesnesinin> Trbir akışını konumlandırdığınızda, diğer akışı birlikte konumlandırabilirsiniz.

Sınıf şablonuna basic_streambuf yönelik ortak arabirim, tüm akış arabellekleri için ortak olan ancak özelleştirilmiş işlemleri sağlar. Korumalı arabirim, bir akışın çalışmasını yapmak için belirli bir gösterimi için gereken işlemleri sağlar. Korumalı sanal üye işlevleri, türetilmiş bir akış arabelleğinin davranışını bir akışın belirli bir gösterimi için uyarlamanıza olanak sağlar. Bu kitaplıktaki türetilmiş her akış arabelleği, korunan sanal üye işlevlerinin davranışını nasıl özellestirdiği açıklanır. Genellikle hiçbir şey yapmayan temel sınıfın varsayılan davranışı bu makalede açıklanmıştır.

Kalan korumalı üye işlevleri, akışlara ve akışlardan arabellek iletimlerine sağlanan herhangi bir depolama alanına ve depolamadan kopyalamayı denetler. Örneğin bir giriş arabelleği şu şekilde tanımlanır:

  • eback, arabelleğin başlangıcına işaret eden bir işaretçidir.

  • gptr, okunacak sonraki öğeye işaret eden bir işaretçidir.

  • egptr, arabelleğin sonunu geçen bir işaretçi.

Benzer şekilde, bir çıkış arabelleği şu şekilde tanımlanır:

  • pbase, arabelleğin başlangıcına işaret eden bir işaretçidir.

  • pptr, yazacak sonraki öğeye bir işaretçi.

  • epptr, arabelleğin sonunu geçen bir işaretçi.

Herhangi bir arabellek için aşağıdaki protokol kullanılır:

  • Sonraki işaretçi null ise arabellek yoktur. Aksi takdirde, üç işaretçi de aynı diziye işaret eder. Sipariş için güvenle karşılaştırılabilirler.

  • Bir çıkış arabelleği için, sonraki işaretçi bitiş işaretçisinden daha azını karşılaştırırsa, bir öğeyi sonraki işaretçi tarafından belirlenen yazma konumunda depolayabilirsiniz.

  • Giriş arabelleği için, bir sonraki işaretçi bitiş işaretçisinden daha azını karşılaştırırsa, bir öğeyi sonraki işaretçi tarafından belirlenen okuma konumunda okuyabilirsiniz.

  • Giriş arabelleği için, başlangıç işaretçisi bir sonraki işaretçiden daha azını karşılaştırırsa, bir öğeyi azaltılan sonraki işaretçi tarafından belirlenen geri koyma konumuna geri koyabilirsiniz.

öğesinden basic_streambufTr<Elem> türetilen bir sınıf için yazdığınız tüm korumalı sanal üye işlevleri, bu protokolü korumak için işbirliği yapmalıdır.

sınıfının basic_streambuf<Elembir nesnesi, Tr> daha önce açıklanan altı işaretçiyi depolar. Ayrıca, türetilmiş bir akış arabelleği tarafından olası kullanım için yerel ayar türünde bir nesnede bir yerel ayar nesnesi depolar.

Oluşturucular

Oluşturucu Açıklama
basic_streambuf türünde basic_streambufbir nesnesi oluşturur.

Tür tanımları

Tür adı Açıklama
char_type Bir tür adını şablon parametresiyle Elem ilişkilendirir.
int_type Kapsam içindeki basic_streambuf bir tür adını şablon parametresiyle Elem ilişkilendirir.
off_type Kapsam içindeki basic_streambuf bir tür adını şablon parametresiyle Elem ilişkilendirir.
pos_type Kapsam içindeki basic_streambuf bir tür adını şablon parametresiyle Elem ilişkilendirir.
traits_type Bir tür adını şablon parametresiyle Tr ilişkilendirir.

Üye işlevleri

Üye işlevi Açıklama
eback Giriş arabelleğinin başına bir işaretçi döndüren korumalı bir işlev.
egptr Giriş arabelleğinin sonunu geçen bir işaretçi döndüren korumalı işlev.
epptr Çıkış arabelleğinin sonunu geçen bir işaretçi döndüren korumalı bir işlev.
gbump Giriş arabelleği için sonraki işaretçiye ekleyen count korumalı bir işlev.
getloc Nesnenin basic_streambuf yerel ayarını alır.
gptr Giriş arabelleğinin sonraki öğesine bir işaretçi döndüren korumalı bir işlev.
imbue pubimbue tarafından çağrılan korumalı, sanal bir işlev.
in_avail Arabellekten okunmaya hazır öğelerin sayısını döndürür.
taşma Tam arabelleğe yeni bir karakter eklendiğinde çağrılabilen korumalı bir sanal işlev.
pbackfail Bir öğeyi giriş akışına geri yerleştirmeye çalışan ve ardından bunu geçerli öğe (sonraki işaretçinin işaret ettiği) haline getirmeye çalışan korumalı bir sanal üye işlevi.
pbase Çıkış arabelleğinin başına bir işaretçi döndüren korumalı bir işlev.
pbump Çıkış arabelleği için sonraki işaretçiye ekleyen count korumalı bir işlev.
pptr Çıkış arabelleğinin sonraki öğesine bir işaretçi döndüren korumalı bir işlev.
pubimbue Nesnenin basic_streambuf yerel ayarını ayarlar.
pubseekoff Türetilmiş bir sınıfta geçersiz kılınan korumalı bir sanal işlev olan seekoff'ı çağırır.
pubseekpos Türetilmiş bir sınıfta geçersiz kılınan ve geçerli işaretçi konumunu sıfırlayan korumalı bir sanal işlev olan seekpos'ı çağırır.
pubsetbuf Türetilmiş bir sınıfta geçersiz kılınan korumalı bir sanal işlev olan setbuf çağrıları.
pubsync Türetilmiş bir sınıfta geçersiz kılınan ve bu arabellekle ilişkili dış akışı güncelleştiren korumalı bir sanal işlev olan eşitlemeyi çağırır.
sbumpc Akış işaretçisini hareket ettirerek geçerli öğeyi okur ve döndürür.
ara Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeye çalışır.
seekpos Korumalı sanal üye işlevi, denetlenen akışlar için geçerli konumları değiştirmeye çalışır.
setbuf Korumalı sanal üye işlevi, türetilmiş her akış arabelleğine özel bir işlem gerçekleştirir.
setg Başlangıç işaretçisinde, _Gnext sonraki işaretçide ve _Gend giriş arabelleğinin bitiş işaretçisinde depolayan _Gbeg korumalı bir işlev.
setp Çıkış arabelleği için başlangıç işaretçisinde ve _Pend bitiş işaretçisinde depolayan _Pbeg korumalı bir işlev.
sgetc Akıştaki konumu değiştirmeden geçerli öğeyi döndürür.
sgetn Okunan öğe sayısını döndürür.
showmanyc Giriş akışından ayıklanacak karakter sayısının sayısını döndüren korumalı sanal üye işlevi. Ayrıca programın süresiz beklemeye tabi olmamasını da sağlar.
snextc Geçerli öğeyi okur ve aşağıdaki öğeyi döndürür.
sputbackc Akışa bir char_type ekler.
sputc Akışa bir karakter ekler.
sputn Akışa bir karakter dizesi ekler.
stossc Akıştaki geçerli öğeyi geçin.
sungetc Akıştan bir karakter alır.
değiş tokuş etmek Sağlanan basic_streambuf nesne parametresindeki değerler için bu nesnedeki değerleri değiştirir.
Eşitleme Denetlenen akışları ilişkili dış akışlarla eşitlemeye çalışan korumalı bir sanal işlev.
uflow Giriş akışından geçerli öğeyi ayıklayan korumalı bir sanal işlev.
yetersiz akış Giriş akışından geçerli öğeyi ayıklayan korumalı bir sanal işlev.
xsgetn Giriş akışından öğeleri ayıklayan korumalı bir sanal işlev.
xsputn Çıkış akışına öğe ekleyen korumalı bir sanal işlev.

İşleçler

Operator Açıklama
operator= Bu nesnenin değerlerini başka bir basic_streambuf nesneden atar.

Gereksinimler

Üst bilgi:<streambuf>

Ad alanı: std

basic_streambuf::basic_streambuf

türünde basic_streambufbir nesnesi oluşturur.

basic_streambuf();

basic_streambuf(const basic_streambuf& right);

Parametreler

Sağ
Bu basic_streambuf nesnenin basic_streambuf değerlerini ayarlamak için kullanılan nesneye bir lvalue başvurusu.

Açıklamalar

İlk korumalı oluşturucu, giriş arabelleği ve çıkış arabelleği denetleen tüm işaretçilerde null bir işaretçi depolar. Ayrıca yerel ayar nesnesinde de depolar locale::classic . Daha fazla bilgi için bkz . locale::classic.

İkinci korumalı oluşturucu, işaretçileri ve yerel ayarı sağdan kopyalar.

basic_streambuf::char_type

Bir tür adını Elem şablon parametresiyle ilişkilendirir.

typedef Elem char_type;

basic_streambuf::eback

Giriş arabelleğinin başına bir işaretçi döndüren korumalı bir işlev.

char_type *eback() const;

Dönüş Değeri

Giriş arabelleğinin başlangıcına işaret eden bir işaretçi.

basic_streambuf::egptr

Giriş arabelleğinin sonunu geçen bir işaretçi döndüren korumalı işlev.

char_type *egptr() const;

Dönüş Değeri

Giriş arabelleğinin sonunu geçen bir işaretçi.

basic_streambuf::epptr

Çıkış arabelleğinin sonunu geçen bir işaretçi döndüren korumalı bir işlev.

char_type *epptr() const;

Dönüş Değeri

Çıkış arabelleğinin sonunu geçen bir işaretçi.

basic_streambuf::gbump

Giriş arabelleği için bir sonraki işaretçiye sayı ekleyen korumalı bir işlev.

void gbump(int count);

Parametreler

count
İşaretçinin ilerletildiği tutar.

basic_streambuf::getloc

basic_streambuf nesnesinin yerel ayarını alır.

locale getloc() const;

Dönüş Değeri

Depolanan yerel ayar nesnesi.

Açıklamalar

İlgili bilgiler için bkz . ios_base::getloc.

Örnek

// basic_streambuf_getloc.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   cout << cout.rdbuf( )->getloc( ).name( ).c_str( ) << endl;
}
C

basic_streambuf::gptr

Giriş arabelleğinin sonraki öğesine bir işaretçi döndüren korumalı bir işlev.

char_type *gptr() const;

Dönüş Değeri

Giriş arabelleğinin sonraki öğesinin işaretçisi.

basic_streambuf::imbue

pubimbue tarafından çağrılan korumalı bir sanal işlev.

virtual void imbue(const locale& _Loc);

Parametreler

_Loc
Yerel ayar başvurusu.

Açıklamalar

Varsayılan davranış hiçbir şey yapmamaktır.

basic_streambuf::in_avail

Arabellekten okunmaya hazır öğelerin sayısını döndürür.

streamsize in_avail();

Dönüş Değeri

Arabellekten okunmaya hazır öğe sayısı.

Açıklamalar

Okuma konumu varsa üye işlevi egptr - gptr döndürür. Aksi takdirde showmanyc döndürür.

Örnek

// basic_streambuf_in_avail.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   char c;
   // cin's buffer is empty, in_avail will return 0
   cout << cin.rdbuf( )->in_avail( ) << endl;
   cin >> c;
   cout << cin.rdbuf( )->in_avail( ) << endl;
}

basic_streambuf::int_type

basic_streambuf kapsamındaki bir tür adını şablon parametresindeki türlerden biriyle ilişkilendirir.

typedef typename traits_type::int_type int_type;

basic_streambuf::off_type

basic_streambuf kapsamındaki bir tür adını şablon parametresindeki türlerden biriyle ilişkilendirir.

typedef typename traits_type::off_type off_type;

basic_streambuf::operator=

Bu nesnenin değerlerini başka bir basic_streambuf nesneden atar.

basic_streambuf& operator=(const basic_streambuf& right);

Parametreler

Sağ
Bu nesneye değer atamak için basic_streambuf kullanılan nesneye bir lvalue başvurusu.

Açıklamalar

Korumalı üye işleci, giriş arabelleği ve çıkış arabelleği denetleen işaretçileri sağdan kopyalar. Ayrıca içinde getloc() depolarright.locale object. döndürür *this.

basic_streambuf::overflow

Tam arabelleğe yeni bir karakter eklendiğinde çağrılabilen korumalı bir sanal işlev.

virtual int_type overflow(int_type _Meta = traits_type::eof());

Parametreler

_Meta
Arabelleğe eklenecek karakter veya traits_type::eof.

Dönüş Değeri

İşlev başarılı olamazsa traits_type::eof döndürür veya bir özel durum oluşturur. Aksi takdirde, traits_type::not_eof(_ Meta) döndürür. Varsayılan davranış, traits_type::eof döndürmektir.

Açıklamalar

_Meta traits_type::eof ile eşit değilse, korumalı sanal üye işlevi çıkış akışına traits_type::to_char_type(_Meta) öğesini eklemeye çalışır. Bunu çeşitli yollarla yapabilir:

  • write position varsa, öğesini yazma konumuna depolayabilir ve çıkış arabelleği için sonraki işaretçiyi artırabilir.

  • Çıkış arabelleği için yeni veya ek depolama alanı ayırarak yazma konumunu kullanılabilir hale getirir.

  • Çıkış arabelleği için başlangıç ve sonraki işaretçiler arasındaki öğelerin bir kısmını veya tümünü dış hedefe yazarak yazma konumunu kullanılabilir hale getirir.

Eşitleme ve yetersiz akış işlevleriyle birlikte sanal taşma işlevi, streambuf türetilmiş sınıfının özelliklerini tanımlar. Türetilen her sınıf taşma işlemini farklı şekilde uygulayabilir, ancak çağıran akış sınıfına sahip arabirim aynıdır.

İşlev overflow en sık ve put alanı dolduğunda gibi sputc sputn genel streambuf işlevler tarafından çağrılır, ancak akış sınıfları da dahil olmak üzere diğer sınıflar her zaman çağırabiliroverflow.

işlevi, ve pptr işaretçileri arasındaki pbase put alanındaki karakterleri tüketir ve sonra yerleştirme alanını yeniden başlatıyor. İşlevin overflow de tüketmesi nCh gerekir (değilse nCh EOF), veya bir sonraki çağrıda kullanılacak şekilde bu karakteri yeni put alanına yerleştirmeyi seçebilir.

kullanma tanımı türetilmiş sınıflar arasında değişir. Örneğin, filebuf sınıf karakterlerini bir dosyaya yazarken strstreambuf , sınıf bunları arabellekte tutar ve (arabellek dinamik olarak belirlenmişse) taşma çağrısına yanıt olarak arabelleği genişletir. Bu genişletme, eski arabelleğinden kurtulup yeni, daha büyük bir arabellekle değiştirilerek elde edilir. İşaretçiler gerektiği gibi ayarlanır.

basic_streambuf::p backfail

Bir öğeyi giriş akışına geri yerleştirmeye çalışan ve ardından bunu geçerli öğe (sonraki işaretçinin işaret ettiği) haline getirmeye çalışan korumalı bir sanal üye işlevi.

virtual int_type pbackfail(int_type _Meta = traits_type::eof());

Parametreler

_Meta
Arabelleğe eklenecek karakter veya traits_type::eof.

Dönüş Değeri

İşlev başarılı olamazsa traits_type::eof döndürür veya bir özel durum oluşturur. Aksi takdirde, başka bir değer döndürür. Varsayılan davranış, traits_type::eof döndürmektir.

Açıklamalar

_Meta traits_type::eof değerine eşitse, geri itme öğesi geçerli öğeden önceki akışta zaten olan öğedir. Aksi takdirde, bu öğe traits_type::to_char_type(_Meta) ile değiştirilir. işlevi bir öğeyi çeşitli yollarla geri koyabilir:

  • Bir geri koyma konumu varsa, öğeyi geri koyma konumuna depolayabilir ve giriş arabelleği için sonraki işaretçiyi azaltabilir.

  • Giriş arabelleği için yeni veya ek depolama alanı ayırarak geri alma konumunu kullanılabilir hale getirir.

  • Ortak giriş ve çıkış akışlarına sahip bir akış arabelleği için, çıkış arabelleği için başlangıç ve sonraki işaretçiler arasındaki öğelerin bir kısmını veya tümünü dış hedefe yazarak geri alma konumunu kullanılabilir hale getirir.

basic_streambuf::p base

Çıkış arabelleğinin başına bir işaretçi döndüren korumalı bir işlev.

char_type *pbase() const;

Dönüş Değeri

Çıkış arabelleğinin başlangıcına işaret eden bir işaretçi.

basic_streambuf::p bump

Çıkış arabelleği için bir sonraki işaretçiye sayı ekleyen korumalı bir işlev.

void pbump(int count);

Parametreler

count
Yazma konumunun ileriye taşınması için karakter sayısı.

basic_streambuf::p os_type

basic_streambuf kapsamındaki bir tür adını şablon parametresindeki türlerden biriyle ilişkilendirir.

typedef typename traits_type::pos_type pos_type;

basic_streambuf::p ptr

Çıkış arabelleğinin sonraki öğesine bir işaretçi döndüren korumalı bir işlev.

char_type *pptr() const;

Dönüş Değeri

Çıkış arabelleğinin sonraki öğesinin işaretçisi.

basic_streambuf::p ubimbue

basic_streambuf nesnesinin yerel ayarını ayarlar.

locale pubimbue(const locale& _Loc);

Parametreler

_Loc
Yerel ayar başvurusu.

Dönüş Değeri

Yerel ayar nesnesinde depolanan önceki değer.

Açıklamalar

Üye işlevi_ Loc dosyasını yerel ayar nesnesinde depolar ve imbue'yi çağırır.

Örnek

kullanan pubimbuebir örnek için bkz. basic_ios::imbue.

basic_streambuf::p ubseekoff

Türetilmiş bir sınıfta geçersiz kılınan korumalı bir sanal işlev olan seekoff'ı çağırır.

pos_type pubseekoff(off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Kapalı
_Way göre aranacak konum.

_Yol
Uzaklık işlemleri için başlangıç noktası. Olası değerler için bkz . seekdir .

_Hangi
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

Dönüş Değeri

Yeni konumu veya geçersiz bir akış konumunu (seekoff(_ Off, _Way, _Which)) döndürür.

Açıklamalar

İşaretçiyi _Way göre taşır.

basic_streambuf::p ubseekpos

Türetilmiş bir sınıfta geçersiz kılınan ve geçerli işaretçi konumunu sıfırlayan korumalı bir sanal işlev olan seekpos'ı çağırır.

pos_type pubseekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Sp
Aranacak konum.

_Hangi
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

Dönüş Değeri

Yeni konum veya geçersiz bir akış konumu. Akış konumunun geçersiz olup olmadığını belirlemek için dönüş değerini ile pos_type(off_type(-1))karşılaştırın.

Açıklamalar

Üye işlevi seekpos(_ Sp, _Which) döndürür.

basic_streambuf::p ubsetbuf

Türetilmiş bir sınıfta geçersiz kılınan korumalı bir sanal işlev olan setbuf çağrıları.

basic_streambuf<Elem, Tr> *pubsetbuf(
    char_type* _Buffer,
    streamsize count);

Parametreler

_Arabellek
Bu örnekleme için işaretçi char_type .

count
Arabelleğin boyutu.

Dönüş Değeri

setbuf( _Buffer, count) döndürür.

basic_streambuf::p ubsync

Türetilmiş bir sınıfta geçersiz kılınan korumalı bir sanal işlev olan eşitlemeyi çağırır ve bu arabellekle ilişkili dış akışı güncelleştirir.

int pubsync();

Dönüş Değeri

Eşitleme veya hata durumunda -1 döndürür.

basic_streambuf::sbumpc

Akış işaretçisini hareket ettirerek geçerli öğeyi okur ve döndürür.

int_type sbumpc();

Dönüş Değeri

Geçerli öğe.

Açıklamalar

Okuma konumu varsa, üye işlevi traits_type::to_int_type(*gptr) döndürür ve giriş arabelleği için sonraki işaretçiyi artırır. Aksi takdirde uflow döndürür.

Örnek

// basic_streambuf_sbumpc.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   int i = 0;
   i = cin.rdbuf( )->sbumpc( );
   cout << i << endl;
}
3
33
51

basic_streambuf::seekoff

Denetlenen akışlar için geçerli konumları değiştirmeye çalışan korumalı bir sanal üye işlevi.

virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Kapalı
_Way göre aranacak konum.

_Yol
Uzaklık işlemleri için başlangıç noktası. Olası değerler için bkz . seekdir .

_Hangi
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

Dönüş Değeri

Yeni konumu veya geçersiz bir akış konumunu (seekoff (_ Kapalı, _Way, _Which)) döndürür.

Açıklamalar

Yeni konum aşağıdaki gibi belirlenir:

  • ise _Way == ios_base::beg, yeni konum akışın başlangıcı artı _ Kapalı olur.

  • ise _Way == ios_base::cur, yeni konum geçerli akış konumu artı _ Kapalı olur.

  • ise _Way == ios_base::end, yeni konum akışın sonu artı _ Kapalı olur.

Genellikle, hangi &ios_base::in sıfır değilse, giriş akışı etkilenir ve hangi &ios_base::out sıfır değilse çıkış akışı etkilenir. Ancak bu parametrenin gerçek kullanımı türetilmiş akış arabellekleri arasında farklılık gösterir.

İşlev akış konumunu veya konumlarını değiştirmede başarılı olursa, sonuçta elde edilen akış konumunu veya sonuçta elde edilen akış konumlarından birini döndürür. Aksi takdirde geçersiz bir akış konumu döndürür. Varsayılan davranış geçersiz bir akış konumu döndürmektir.

basic_streambuf::seekpos

Denetlenen akışlar için geçerli konumları değiştirmeye çalışan korumalı bir sanal üye işlevi.

virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);

Parametreler

_Sp
Aranacak konum.

_Hangi
İşaretçi konumunun modunu belirtir. Varsayılan ayar, okuma ve yazma konumlarını değiştirmenize izin vermektir.

Dönüş Değeri

Yeni konum veya geçersiz bir akış konumu. Akış konumunun geçersiz olup olmadığını belirlemek için dönüş değerini ile pos_type(off_type(-1))karşılaştırın.

Açıklamalar

Yeni konum_ Sp.

Genellikle, hangi &ios_base::in sıfır değilse, giriş akışı etkilenir ve hangi &ios_base::out sıfır değilse çıkış akışı etkilenir. Ancak bu parametrenin gerçek kullanımı türetilmiş akış arabellekleri arasında farklılık gösterir.

İşlev akış konumunu veya konumlarını değiştirmede başarılı olursa, sonuçta elde edilen akış konumunu veya sonuçta elde edilen akış konumlarından birini döndürür. Aksi takdirde geçersiz bir akış konumu (-1) döndürür. Varsayılan davranış geçersiz bir akış konumu döndürmektir.

basic_streambuf::setbuf

Türetilmiş her akış arabelleğine özel bir işlem gerçekleştiren korumalı bir sanal üye işlevi.

virtual basic_streambuf<Elem, Tr> *setbuf(
    char_type* _Buffer,
    streamsize count);

Parametreler

_Arabellek
Arabelleğe işaretçi.

count
Arabelleğin boyutu.

Dönüş Değeri

Varsayılan davranış döndürmektir this.

Açıklamalar

Bkz. basic_filebuf. setbuf , nesnenin streambuf kullanması için bir bellek alanı sağlar. Türetilmiş sınıflarda tanımlanan içinde arabellek nasıl kullanılır?

basic_streambuf::setg

_ Gbeg öğesini başlangıç işaretçisinde, _Gnext sonraki işaretçide ve _Gend giriş arabelleğinin bitiş işaretçisinde depolayan korumalı bir işlev.

void setg(char_type* _Gbeg,
    char_type* _Gnext,
    char_type* _Gend);

Parametreler

_Gbeg
Arabelleğin başlangıcına ilişkin bir işaretçi.

_Gnext
Arabelleğin ortasında bir yere işaret eden bir işaretçi.

_Gend
Arabelleğin sonuna işaret eden bir işaretçi.

basic_streambuf::setp

başlangıç işaretçisinde _Pbeg depolayan ve çıkış arabelleği için bitiş işaretçisinde _Pend korumalı bir işlev.

void setp(char_type* _Pbeg, char_type* _Pend);

Parametreler

_Pbeg
Arabelleğin başlangıcına ilişkin bir işaretçi.

_Bekleme
Arabelleğin sonuna işaret eden bir işaretçi.

basic_streambuf::sgetc

Akıştaki konumu değiştirmeden geçerli öğeyi döndürür.

int_type sgetc();

Dönüş Değeri

Geçerli öğe.

Açıklamalar

Okuma konumu varsa üye işlevi traits_type::to_int_type( *gptr) döndürür. Aksi takdirde, yetersizlik döndürür.

Örnek

// basic_streambuf_sgetc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
   using namespace std;
   ifstream myfile( "basic_streambuf_sgetc.txt", ios::in );

   char i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
   i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
}

basic_streambuf::sgetn

Giriş arabelleğindeki karakterleri saymak için ayıklar ve bunları sağlanan arabellek ptr'sinde depolar.

Geçirilen değerlerin doğru olup olmadığını denetlemek için çağıranı kullanan bu yöntem güvenli olmayabilir.

streamsize sgetn(
    char_type* ptr,
    streamsize count);

Parametreler

ptr
Ayıklanan karakterleri içerecek arabellek.

count
Okunacak öğe sayısı.

Dönüş Değeri

Okunan öğe sayısı. Daha fazla bilgi için bkz . streamsize .

Açıklamalar

Üye işlevi xsgetn( ptr, count) döndürür.

Örnek

// basic_streambuf_sgetn.cpp
// compile with: /EHsc /W3
#include <iostream>
#include <fstream>

int main()
{
    using namespace std;

    ifstream myfile("basic_streambuf_sgetn.txt", ios::in);
    char a[10];

    // Extract 3 characters from myfile and store them in a.
    streamsize i = myfile.rdbuf()->sgetn(&a[0], 3);  // C4996
    a[i] = myfile.widen('\0');

    // Display the size and contents of the buffer passed to sgetn.
    cout << i << " " << a << endl;

    // Display the contents of the original input buffer.
    cout << myfile.rdbuf() << endl;
}

basic_streambuf::showmanyc

Giriş akışından ayıklanacak karakter sayısını döndüren ve programın süresiz beklemeye tabi olmayacağından emin olan korumalı bir sanal üye işlevi.

virtual streamsize showmanyc();

Dönüş Değeri

Varsayılan davranış sıfır döndürmektir.

basic_streambuf::snextc

Geçerli öğeyi okur ve aşağıdaki öğeyi döndürür.

int_type snextc();

Dönüş Değeri

Akıştaki sonraki öğe.

Açıklamalar

Üye işlevi sbumpc'yi çağırır ve bu işlev traits_type::eof döndürürse traits_type::eof döndürür. Aksi takdirde sgetc döndürür.

Örnek

// basic_streambuf_snextc.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
   using namespace std;
   int i = 0;
   i = cin.rdbuf( )->snextc( );
   // cout << ( int )char_traits<char>::eof << endl;
   cout << i << endl;
}
aa
aa97

basic_streambuf::sputbackc

Akışa bir char_type ekler.

int_type sputbackc(char_type _Ch);

Parametreler

_Caner
Karakter.

Dönüş Değeri

Karakteri veya hatayı döndürür.

Açıklamalar

Bir geri koyma konumu varsa ve _Ch bu konumda depolanan karaktere eşitse, üye işlevi giriş arabelleği için sonraki işaretçiyi azaltıp traits_type::to_int_type( _Ch) döndürür. Aksi takdirde pbackfail( _Ch) döndürür.

Örnek

// basic_streambuf_sputbackc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
    using namespace std;

    ifstream myfile("basic_streambuf_sputbackc.txt",
        ios::in);

    int i = myfile.rdbuf()->sbumpc();
    cout << (char)i << endl;
    int j = myfile.rdbuf()->sputbackc('z');
    if (j == 'z')
    {
        cout << "it worked" << endl;
    }
    i = myfile.rdbuf()->sgetc();
    cout << (char)i << endl;
}

basic_streambuf::sputc

Akışa bir karakter ekler.

int_type sputc(char_type _Ch);

Parametreler

_Caner
Karakter.

Dönüş Değeri

Başarılı olursa karakteri döndürür.

Açıklamalar

write position varsa, üye işlevi _Ch yazma konumunda depolar, çıkış arabelleği için sonraki işaretçiyi artırır ve traits_type::to_int_type( _Ch) döndürür. Aksi takdirde taşma() _Chdöndürür.

Örnek

// basic_streambuf_sputc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
   using namespace std;

   int i = cout.rdbuf( )->sputc( 'a' );
   cout << endl << ( char )i << endl;
}
a
a

basic_streambuf::sputn

Akışa bir karakter dizesi ekler.

streamsize sputn(const char_type* ptr, streamsize count);

Parametreler

ptr
Karakter dizesi.

count
Karakter sayısı.

Dönüş Değeri

Akışa eklenen karakter sayısı.

Açıklamalar

Üye işlevi xsputn( ptr, count) döndürür. Daha fazla bilgi için bu üyenin Açıklamalar bölümüne bakın.

Örnek

// basic_streambuf_sputn.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main()
{
    using namespace std;

    streamsize i = cout.rdbuf()->sputn("test", 4);
    cout << endl << i << endl;
}
test
4

basic_streambuf::stossc

Akıştaki geçerli öğeyi geçin.

void stossc();

Açıklamalar

Üye işlevi sbumpc'yi çağırır. Bu üye işlevini sağlamak için bir uygulama gerekli değildir.

Örnek

// basic_streambuf_stossc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
   using namespace std;
   ifstream myfile( "basic_streambuf_stossc.txt", ios::in );

   myfile.rdbuf( )->stossc( );
   char i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
}

basic_streambuf::sungetc

Akıştan bir karakter alır.

int_type sungetc();

Dönüş Değeri

Karakteri veya hatayı döndürür.

Açıklamalar

Bir geri koyma konumu varsa, üye işlevi giriş arabelleği için sonraki işaretçiyi azaltıp to_int_type(* gptr) döndürürtraits_type::. Ancak, geçerli arabelleğin durumunda yakalanması için son karakterin okunmasını belirlemek her zaman mümkün değildir. Bu doğruysa işlev pbackfail döndürür. Bu durumdan kaçınmak için, akışın başında çağırmadığınız ve birden fazla karakteri geri yerleştirmeyi denemediğiniz durumlarda başarısız olmayacak olan öğesini geri koyacak ve çağıracak sputbackc(ch)karakteri takip edin.

Örnek

// basic_streambuf_sungetc.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
   using namespace std;

   ifstream myfile( "basic_streambuf_sungetc.txt", ios::in );

   // Read and increment
   int i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;

   // Read and increment
   i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;

   // Decrement, read, and do not increment
   i = myfile.rdbuf( )->sungetc( );
   cout << ( char )i << endl;

   i = myfile.rdbuf( )->sungetc( );
   cout << ( char )i << endl;

   i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;
}

basic_streambuf::swap

Sağlanan basic_streambuf nesnedeki değerler için bu nesnedeki değerleri değiştirir.

void swap(basic_streambuf& right);

Parametreler

Sağ
Değerleri değiştirmek için kullanılan nesneye basic_streambuf bir lvalue başvurusu.

Açıklamalar

Korumalı üye işlevi, ve output buffer'yi denetleen input buffer tüm işaretçileri doğruyla değiştirir. Ayrıca getloc() öğesini nesnesiyle locale de değiştirir.right.

basic_streambuf::sync

Denetlenen akışları ilişkili dış akışlarla eşitlemeye çalışan korumalı bir sanal işlev.

virtual int sync();

Dönüş Değeri

İşlev başarılı olamazsa -1 döndürür. Varsayılan davranış sıfır döndürmektir.

Açıklamalar

sync çıkış arabelleği için başlangıç ve sonraki işaretçiler arasında herhangi bir öğe yazmayı içerir. Giriş arabelleği için sonraki ve bitiş işaretçileri arasına öğe yerleştirmeyi içermez.

basic_streambuf::traits_type

Tür adını Tr şablonu parametresiyle ilişkilendirir.

typedef Tr traits_type;

basic_streambuf::uflow

Giriş akışından geçerli öğeyi ayıklayan korumalı bir sanal işlev.

virtual int_type uflow();

Dönüş Değeri

Geçerli öğe.

Açıklamalar

Korumalı sanal üye işlevi, giriş akışından geçerli öğe ch'sini ayıklamaya, ardından geçerli akış konumunu ilerletmeye ve öğeyi traits_type::to_int_type( ch) olarak döndürmeye çalışır. Bunu çeşitli yollarla yapabilir:

  • Okuma konumu varsa, okuma konumunda depolanan öğe olarak ch alır ve giriş arabelleği için sonraki işaretçiyi ilerler.

  • Bir öğeyi doğrudan, bir dış kaynaktan okuyabilir ve ch değeri olarak teslim edebilir.

  • Ortak giriş ve çıkış akışlarına sahip bir akış arabelleği için, çıkış arabelleği için başlangıç ve sonraki işaretçiler arasındaki öğelerin bir kısmını veya tümünü dış hedefe yazarak okuma konumunu kullanılabilir hale getirir. Veya giriş arabelleği için yeni veya ek depolama alanı ayırabilir. İşlev daha sonra bazı dış kaynaklardan bir veya daha fazla öğeyi okur.

İşlev başarılı olamazsa traits_type::eof döndürür veya bir özel durum oluşturur. Aksi takdirde, giriş akışındaki geçerli öğeyi ch döndürür ve yukarıda açıklandığı gibi dönüştürülür ve giriş arabelleği için sonraki işaretçiyi ilerletir. Varsayılan davranış, underflow çağrısı yapmaktır ve bu işlev traits_type::eof döndürürse traits_type::eof döndürür. Aksi takdirde işlev, giriş akışındaki geçerli öğe ch değerini döndürür ve daha önce açıklandığı gibi dönüştürülür ve giriş arabelleği için sonraki işaretçiyi ilerletir.

basic_streambuf::underflow

Korumalı, giriş akışından geçerli öğeyi ayıklamak için sanal işlev.

virtual int_type underflow();

Dönüş Değeri

Geçerli öğe.

Açıklamalar

Korumalı sanal üye işlevi, geçerli akış konumunu ilerletmeden giriş akışından geçerli öğe ch'sini ayıklamaya ve to_int_type( ch) olarak traits_type::döndürmeye çalışır. Bunu çeşitli yollarla yapabilir:

  • Okuma konumu varsa, ch okuma konumunda depolanan öğedir. Daha fazla bilgi için basic_streambuf Sınıfının Açıklamalar bölümüne bakın.

  • Giriş arabelleği için yeni veya ek depolama alanı ayırarak, ardından bazı dış kaynaklardan bir veya daha fazla öğeden okuma yaparak okuma konumunu kullanılabilir hale getirir. Daha fazla bilgi için basic_streambuf Sınıfının Açıklamalar bölümüne bakın.

İşlev başarılı olamazsa eof() döndürür traits_type::veya bir özel durum oluşturur. Aksi takdirde, giriş akışındaki geçerli öğeyi döndürür ve daha önce açıklandığı gibi dönüştürülür. Varsayılan davranış döndürmektir traits_type::eof().

Eşitleme ve taşma işlevleriyle sanal underflow işlev, türetilmiş sınıfın streambufözelliklerini tanımlar. Türetilen her sınıf farklı şekilde uygulanabilir underflow , ancak çağıran akış sınıfıyla arabirim aynıdır.

İşlev underflow en sık get alanı boş olduğunda sgetc ve sgetn gibi genel streambuf işlevler tarafından çağrılır, ancak akış sınıfları da dahil olmak üzere diğer sınıflar her zaman çağırabilirunderflow.

işlevi giriş underflow kaynağındaki karakterleri içeren get alanını sağlar. Get alanında karakterler varsa, underflow ilk karakteri döndürür. Alma alanı boşsa, get alanını doldurur ve sonraki karakteri (get alanında bıraktığı) döndürür. Başka karakter yoksa, underflow get alanını boş bırakır ve döndürür EOF .

strstreambuf sınıfında, underflow egptr işaretçisini çağrısı tarafından dinamik olarak ayrılan depolamaya erişmek için overflowayarlar.

basic_streambuf::xsgetn

Korumalı, giriş akışından öğeleri ayıklamak için sanal işlev.

Geçirilen değerlerin doğru olup olmadığını denetlemek için çağıranı kullanan bu yöntem güvenli olmayabilir.

virtual streamsize xsgetn(
    char_type* ptr,
    streamsize count);

Parametreler

ptr
Ayıklanan karakterleri içerecek arabellek.

count
Ayıklanması gereken öğe sayısı.

Dönüş Değeri

Ayıklanan öğelerin sayısı.

Açıklamalar

Korumalı sanal üye işlevi, sbumpc'ye tekrarlanan çağrılar gibi giriş akışından öğeleri saymak için ayıklar ve bunları ptr'den başlayarak dizide depolar. Ayıklanan öğelerin sayısını döndürür.

basic_streambuf::xsputn

Çıkış akışına öğe eklemek için korumalı, sanal işlev.

virtual streamsize xsputn(const char_type* ptr, streamsize count);

Parametreler

ptr
Eklenecek öğelere işaretçi.

count
Eklenecek öğe sayısı.

Dönüş Değeri

Akışa eklenen öğe sayısı.

Açıklamalar

Korumalı sanal üye işlevi, ptr'den başlayarak diziden sputc'ye yapılan yinelenen çağrılar gibi öğeleri çıkış akışına saymak için ekler. Çıkış akışına karakterlerin eklenmesi, tüm sayı karakterleri yazıldıktan sonra veya çağrıldıysa sputc( count) döndürüleceğinden traits::eof()durdurulur. Eklenen öğe sayısını döndürür.

Ayrıca bkz.

C++ Standart Kitaplığında İş Parçacığı Güvenliği
iostream Programlaması
iostreams Kuralları