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> Tr
bir 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_streambuf
Tr
<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
<Elem
bir 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_streambuf bir 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_streambuf
bir 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 pubimbue
bir ö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() _Ch
dö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 overflow
ayarlar.
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ı