Bagikan melalui


Kelas basic_streambuf

Menjelaskan kelas dasar abstrak untuk mendapatkan buffer aliran, yang mengontrol transmisi elemen ke dan dari representasi tertentu dari aliran.

Sintaks

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

Parameter

Elem
Sebuah char_type.

Tr
Karakter traits_type.

Keterangan

Templat kelas menjelaskan kelas dasar abstrak untuk mendapatkan buffer aliran, yang mengontrol transmisi elemen ke dan dari representasi tertentu dari aliran. Objek kelas basic_streambuf membantu mengontrol aliran dengan elemen jenis Tr, juga dikenal sebagai char_type, yang sifat karakternya ditentukan oleh char_traits kelas, juga dikenal sebagai traits_type.

Setiap buffer aliran secara konseptual mengontrol dua aliran independen: satu untuk ekstraksi (input) dan satu untuk penyisipan (output). Representasi tertentu dapat, bagaimanapun, membuat salah satu atau kedua aliran ini tidak dapat diakses. Biasanya mempertahankan beberapa hubungan antara dua aliran. Apa yang Anda sisipkan ke dalam aliran output basic_stringbufElem<, Tr> objek, misalnya, adalah apa yang kemudian Anda ekstrak dari aliran inputnya. Saat Anda memposisikan satu aliran basic_filebufElem<, Tr> objek, Anda memposisikan aliran lainnya secara bersamaan.

Antarmuka publik ke templat basic_streambuf kelas menyediakan operasi yang umum untuk semua buffer streaming, namun khusus. Antarmuka yang dilindungi memasok operasi yang diperlukan untuk representasi aliran tertentu untuk melakukan pekerjaannya. Fungsi anggota virtual yang dilindungi memungkinkan Anda menyesuaikan perilaku buffer aliran turunan untuk representasi aliran tertentu. Setiap buffer aliran turunan dalam pustaka ini menjelaskan caranya mengkhususkan perilaku fungsi anggota virtual yang dilindungi. Perilaku default untuk kelas dasar, yang sering tidak melakukan apa-apa, dijelaskan dalam artikel ini.

Fungsi anggota yang dilindungi yang tersisa mengontrol penyalinan ke dan dari penyimpanan apa pun yang disediakan ke transmisi buffer ke dan dari aliran. Buffer input, misalnya, ditandai dengan:

  • eback, pointer ke awal buffer.

  • gptr, pointer ke elemen berikutnya untuk dibaca.

  • egptr, pointer melewati akhir buffer.

Demikian pula, buffer output ditandai dengan:

  • pbase, penunjuk ke awal buffer.

  • pptr, pointer ke elemen berikutnya untuk menulis.

  • epptr, pointer melewati akhir buffer.

Untuk buffer apa pun, protokol berikut digunakan:

  • Jika pointer berikutnya null, tidak ada buffer. Jika tidak, ketiga pointer menunjuk ke urutan yang sama. Mereka dapat dibandingkan dengan aman untuk pesanan.

  • Untuk buffer output, jika pointer berikutnya membandingkan kurang dari pointer akhir, Anda dapat menyimpan elemen pada posisi tulis yang ditunjuk oleh pointer berikutnya.

  • Untuk buffer input, jika pointer berikutnya membandingkan kurang dari pointer akhir, Anda dapat membaca elemen pada posisi baca yang ditunjuk oleh pointer berikutnya.

  • Untuk buffer input, jika penunjuk awal membandingkan kurang dari penunjuk berikutnya, Anda dapat meletakkan kembali elemen pada posisi putback yang ditunjuk oleh pointer berikutnya yang dikurangi.

Setiap fungsi anggota virtual yang dilindungi yang Anda tulis untuk kelas yang berasal dari basic_streambuf<Elem, Tr> harus bekerja sama dalam mempertahankan protokol ini.

Objek kelas basic_streambuf<Elem, Tr> menyimpan enam pointer yang dijelaskan sebelumnya. Ini juga menyimpan objek lokal dalam objek jenis lokal untuk potensi penggunaan oleh buffer aliran turunan.

Konstruktor

Konstruktor Deskripsi
basic_streambuf Membuat objek jenis basic_streambuf.

Typedefs

Nama jenis Deskripsi
char_type Mengaitkan nama jenis dengan Elem parameter templat.
int_type Mengaitkan nama jenis dalam basic_streambuf cakupan dengan Elem parameter templat.
off_type Mengaitkan nama jenis dalam basic_streambuf cakupan dengan Elem parameter templat.
pos_type Mengaitkan nama jenis dalam basic_streambuf cakupan dengan Elem parameter templat.
traits_type Mengaitkan nama jenis dengan Tr parameter templat.

Fungsi anggota

Fungsi anggota Deskripsi
eback Fungsi terproteksi yang mengembalikan penunjuk ke awal buffer input.
egptr Fungsi terproteksi yang mengembalikan penunjuk melewati akhir buffer input.
epptr Fungsi terproteksi yang mengembalikan pointer melewati akhir buffer output.
gbump Fungsi terproteksi yang ditambahkan count ke penunjuk berikutnya untuk buffer input.
getloc basic_streambuf Mendapatkan lokal objek.
gptr Fungsi terproteksi yang mengembalikan penunjuk ke elemen buffer input berikutnya.
imbue Fungsi virtual yang dilindungi yang dipanggil oleh pubimbue.
in_avail Mengembalikan jumlah elemen yang siap dibaca dari buffer.
Overflow Fungsi virtual terproteksi yang dapat dipanggil ketika karakter baru dimasukkan ke dalam buffer penuh.
pbackfail Fungsi anggota virtual yang dilindungi yang mencoba menempatkan kembali elemen ke dalam aliran input, lalu menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya).
pbase Fungsi terproteksi yang mengembalikan penunjuk ke awal buffer output.
pbump Fungsi terproteksi yang ditambahkan count ke penunjuk berikutnya untuk buffer output.
pptr Fungsi terproteksi yang mengembalikan penunjuk ke elemen buffer output berikutnya.
pubimbue basic_streambuf Mengatur lokal objek.
pubseekoff Memanggil seekoff, fungsi virtual terlindungi yang ditimpa di kelas turunan.
pubseekpos Memanggil seekpos, fungsi virtual yang dilindungi yang ditimpa di kelas turunan dan mengatur ulang posisi penunjuk saat ini.
pubsetbuf Memanggil setbuf, fungsi virtual yang dilindungi yang ditimpa di kelas turunan.
pubsync Sinkronisasi panggilan, fungsi virtual yang dilindungi yang ditimpa di kelas turunan dan memperbarui aliran eksternal yang terkait dengan buffer ini.
sbumpc Membaca dan mengembalikan elemen saat ini, memindahkan penunjuk aliran.
seekoff Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol.
seekpos Fungsi anggota virtual yang dilindungi mencoba mengubah posisi saat ini untuk aliran yang dikontrol.
setbuf Fungsi anggota virtual yang dilindungi melakukan operasi khusus untuk setiap buffer aliran turunan.
setg Fungsi terproteksi yang disimpan _Gbeg di penunjuk awal, _Gnext di penunjuk berikutnya, dan _Gend di penunjuk akhir untuk buffer input.
setp Fungsi terproteksi yang disimpan _Pbeg di penunjuk awal dan _Pend di penunjuk akhir untuk buffer output.
sgetc Mengembalikan elemen saat ini tanpa mengubah posisi dalam aliran.
sgetn Mengembalikan jumlah elemen yang dibaca.
showmanyc Fungsi anggota virtual yang dilindungi yang mengembalikan hitungan jumlah karakter yang dapat diekstrak dari aliran input. Ini juga memastikan bahwa program tidak akan tunduk pada penantian yang tidak terbatas.
snextc Membaca elemen saat ini dan mengembalikan elemen berikut.
sputbackc char_type Menempatkan di aliran.
sputc Menempatkan karakter ke dalam aliran.
sputn Menempatkan string karakter ke dalam aliran.
stossc Pindah melewati elemen saat ini di aliran.
sungetc Mendapatkan karakter dari aliran.
tukar Menukar nilai dalam objek ini untuk nilai dalam parameter objek yang disediakan basic_streambuf .
Sync Fungsi virtual terproteksi yang mencoba menyinkronkan aliran terkontrol dengan aliran eksternal terkait.
uflow Fungsi virtual yang dilindungi yang mengekstrak elemen saat ini dari aliran input.
aliran bawah Fungsi virtual yang dilindungi yang mengekstrak elemen saat ini dari aliran input.
xsgetn Fungsi virtual terproteksi yang mengekstrak elemen dari aliran input.
xsputn Fungsi virtual terproteksi yang menyisipkan elemen ke dalam aliran output.

Operator

Operator Deskripsi
operator= Menetapkan nilai objek ini dari objek lain basic_streambuf .

Persyaratan

Header:<streambuf>

Namespace: std

basic_streambuf::basic_streambuf

Membuat objek jenis basic_streambuf.

basic_streambuf();

basic_streambuf(const basic_streambuf& right);

Parameter

right
Referensi lvalue ke basic_streambuf objek yang digunakan untuk mengatur nilai untuk objek ini basic_streambuf .

Keterangan

Konstruktor pertama yang dilindungi menyimpan pointer null di semua pointer yang mengontrol buffer input dan buffer output. Ini juga disimpan locale::classic di objek lokal. Untuk informasi selengkapnya, lihat lokal::klasik.

Konstruktor kedua yang dilindungi menyalin pointer dan lokal dari kanan.

basic_streambuf::char_type

Mengaitkan nama jenis dengan parameter templat Elem .

typedef Elem char_type;

basic_streambuf::eback

Fungsi terproteksi yang mengembalikan penunjuk ke awal buffer input.

char_type *eback() const;

Tampilkan Nilai

Penunjuk ke awal buffer input.

basic_streambuf::egptr

Fungsi terproteksi yang mengembalikan penunjuk melewati akhir buffer input.

char_type *egptr() const;

Tampilkan Nilai

Penunjuk melewati akhir buffer input.

basic_streambuf::epptr

Fungsi terproteksi yang mengembalikan pointer melewati akhir buffer output.

char_type *epptr() const;

Tampilkan Nilai

Pointer melewati akhir buffer output.

basic_streambuf::gbump

Fungsi terproteksi yang menambahkan hitungan ke penunjuk berikutnya untuk buffer input.

void gbump(int count);

Parameter

count
Jumlah untuk memajukan penunjuk.

basic_streambuf::getloc

Mendapatkan lokal objek basic_streambuf.

locale getloc() const;

Tampilkan Nilai

Objek lokal tersimpan.

Keterangan

Untuk informasi terkait, lihat ios_base::getloc.

Contoh

// 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

Fungsi terproteksi yang mengembalikan penunjuk ke elemen buffer input berikutnya.

char_type *gptr() const;

Tampilkan Nilai

Penunjuk ke elemen buffer input berikutnya.

basic_streambuf::imbue

Fungsi virtual terlindungi yang disebut oleh pubimbue.

virtual void imbue(const locale& _Loc);

Parameter

_Loc
Referensi ke lokal.

Keterangan

Perilaku defaultnya adalah tidak melakukan apa-apa.

basic_streambuf::in_avail

Mengembalikan jumlah elemen yang siap dibaca dari buffer.

streamsize in_avail();

Tampilkan Nilai

Jumlah elemen yang siap dibaca dari buffer.

Keterangan

Jika posisi baca tersedia, fungsi anggota mengembalikan egptr gptr - . Jika tidak, itu mengembalikan showmanyc.

Contoh

// 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

Mengaitkan nama jenis dalam cakupan basic_streambuf dengan salah satu jenis dalam parameter templat.

typedef typename traits_type::int_type int_type;

basic_streambuf::off_type

Mengaitkan nama jenis dalam cakupan basic_streambuf dengan salah satu jenis dalam parameter templat.

typedef typename traits_type::off_type off_type;

basic_streambuf::operator=

Menetapkan nilai objek ini dari objek lain basic_streambuf .

basic_streambuf& operator=(const basic_streambuf& right);

Parameter

right
Referensi lvalue ke basic_streambuf objek yang digunakan untuk menetapkan nilai ke objek ini.

Keterangan

Operator anggota yang dilindungi menyalin dari kanan pointer yang mengontrol buffer input dan buffer output. Ini juga menyimpan right.getloc() di locale object. Hal ini mengembalikan *this.

basic_streambuf::overflow

Fungsi virtual terproteksi yang dapat dipanggil ketika karakter baru dimasukkan ke dalam buffer penuh.

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

Parameter

_Meta
Karakter yang akan dimasukkan ke dalam buffer, atau traits_type::eof.

Tampilkan Nilai

Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof atau melemparkan pengecualian. Jika tidak, mengembalikan traits_type::not_eof(_ Meta). Perilaku defaultnya adalah mengembalikan traits_type::eof.

Keterangan

Jika _Meta tidak dibandingkan dengan traits_type::eof, fungsi anggota virtual yang dilindungi berusaha memasukkan elemen traits_type::to_char_type(_Meta) ke dalam aliran output. Ini dapat melakukannya dengan berbagai cara:

  • write position Jika tersedia, elemen dapat disimpan ke dalam posisi tulis dan menaikkan pointer berikutnya untuk buffer output.

  • Ini dapat membuat posisi tulis tersedia dengan mengalokasikan penyimpanan baru atau tambahan untuk buffer output.

  • Ini dapat membuat posisi tulis tersedia dengan menulis, ke beberapa tujuan eksternal, beberapa atau semua elemen antara pointer awal dan berikutnya untuk buffer output.

Fungsi luapan virtual, bersama dengan fungsi sinkronisasi dan underflow , mendefinisikan karakteristik kelas turunan streambuf. Setiap kelas turunan mungkin mengimplementasikan luapan secara berbeda, tetapi antarmuka dengan kelas aliran panggilan sama.

Fungsi overflow ini paling sering dipanggil oleh fungsi publik streambuf seperti sputc dan sputn ketika area put penuh, tetapi kelas lain, termasuk kelas streaming, dapat memanggil overflow kapan saja.

Fungsi ini mengonsumsi karakter di area put antara pbase pointer dan pptr lalu menginisialisasi ulang area put. Fungsi overflow juga harus mengkonsumsi nCh (jika nCh tidak EOF), atau mungkin memilih untuk menempatkan karakter tersebut di area put baru sehingga akan dikonsumsi pada panggilan berikutnya.

Definisi konsumsi bervariasi di antara kelas turunan. Misalnya, filebuf kelas menulis karakternya ke file, sementara strstreambuf kelas menyimpannya di buffer-nya dan (jika buffer ditetapkan sebagai dinamis) memperluas buffer sebagai respons terhadap panggilan ke luapan. Ekspansi ini dicapai dengan membebaskan buffer lama dan menggantinya dengan yang baru dan lebih besar. Pointer disesuaikan seperlunya.

basic_streambuf::p backfail

Fungsi anggota virtual yang dilindungi yang mencoba menempatkan kembali elemen ke dalam aliran input, lalu menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya).

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

Parameter

_Meta
Karakter yang akan dimasukkan ke dalam buffer, atau traits_type::eof.

Tampilkan Nilai

Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof atau melemparkan pengecualian. Jika tidak, ia mengembalikan beberapa nilai lain. Perilaku defaultnya adalah mengembalikan traits_type::eof.

Keterangan

Jika _Meta dibandingkan dengan traits_type::eof, elemen untuk mendorong kembali secara efektif yang sudah ada di aliran sebelum elemen saat ini. Jika tidak, elemen tersebut digantikan oleh traits_type::to_char_type(_Meta). Fungsi ini dapat mengembalikan elemen dengan berbagai cara:

  • Jika posisi putback tersedia, itu dapat menyimpan elemen ke dalam posisi putback dan mengurangi pointer berikutnya untuk buffer input.

  • Ini dapat membuat posisi putback tersedia dengan mengalokasikan penyimpanan baru atau tambahan untuk buffer input.

  • Untuk buffer aliran dengan aliran input dan output umum, ia dapat membuat posisi putback tersedia dengan menulis, ke beberapa tujuan eksternal, beberapa atau semua elemen antara pointer awal dan berikutnya untuk buffer output.

basic_streambuf::p base

Fungsi terproteksi yang mengembalikan penunjuk ke awal buffer output.

char_type *pbase() const;

Tampilkan Nilai

Penunjuk ke awal buffer output.

basic_streambuf::p bump

Fungsi terproteksi yang menambahkan hitungan ke penunjuk berikutnya untuk buffer output.

void pbump(int count);

Parameter

count
Jumlah karakter untuk memindahkan posisi tulis ke depan.

basic_streambuf::p os_type

Mengaitkan nama jenis dalam cakupan basic_streambuf dengan salah satu jenis dalam parameter templat.

typedef typename traits_type::pos_type pos_type;

basic_streambuf::p ptr

Fungsi terproteksi yang mengembalikan penunjuk ke elemen buffer output berikutnya.

char_type *pptr() const;

Tampilkan Nilai

Penunjuk ke elemen berikutnya dari buffer output.

basic_streambuf::p ubimbue

Mengatur lokal objek basic_streambuf.

locale pubimbue(const locale& _Loc);

Parameter

_Loc
Referensi ke lokal.

Tampilkan Nilai

Nilai sebelumnya disimpan di objek lokal.

Keterangan

Fungsi anggota menyimpan _ Loc di objek lokal dan memanggil imbue.

Contoh

Lihat basic_ios::imbue untuk contoh yang menggunakan pubimbue.

basic_streambuf::p ubseekoff

Memanggil seekoff, fungsi virtual terlindungi yang ditimpa di kelas turunan.

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

Parameter

_Off
Posisi yang dicari relatif terhadap _Way.

_Cara
Titik awal untuk operasi offset. Lihat seekdir untuk kemungkinan nilai.

_Yang
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.

Tampilkan Nilai

Mengembalikan posisi baru atau posisi aliran yang tidak valid (seekoff(_ Off, _Way, _Which)).

Keterangan

Memindahkan penunjuk relatif terhadap _Way.

basic_streambuf::p ubseekpos

Memanggil seekpos, fungsi virtual yang dilindungi yang ditimpa di kelas turunan, dan mengatur ulang posisi penunjuk saat ini.

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

Parameter

_Sp
Posisi yang dicari.

_Yang
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.

Tampilkan Nilai

Posisi baru atau posisi aliran yang tidak valid. Untuk menentukan apakah posisi aliran tidak valid, bandingkan nilai yang dikembalikan dengan pos_type(off_type(-1)).

Keterangan

Fungsi anggota mengembalikan seekpos(_ Sp, _Which).

basic_streambuf::p ubsetbuf

Memanggil setbuf, fungsi virtual yang dilindungi yang ditimpa di kelas turunan.

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

Parameter

_Buffer
Penunjuk untuk char_type instansiasi ini.

count
Ukuran buffer.

Tampilkan Nilai

Mengembalikan setbuf( _Buffer, count).

basic_streambuf::p ubsync

Sinkronisasi panggilan, fungsi virtual yang dilindungi yang ditimpa di kelas turunan, dan memperbarui aliran eksternal yang terkait dengan buffer ini.

int pubsync();

Tampilkan Nilai

Mengembalikan sinkronisasi atau -1 jika gagal.

basic_streambuf::sbumpc

Membaca dan mengembalikan elemen saat ini, memindahkan penunjuk aliran.

int_type sbumpc();

Tampilkan Nilai

Elemen saat ini.

Keterangan

Jika posisi baca tersedia, fungsi anggota mengembalikan traits_type::to_int_type(*gptr) dan meningkatkan pointer berikutnya untuk buffer input. Jika tidak, ia mengembalikan uflow.

Contoh

// 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

Fungsi anggota virtual yang dilindungi yang mencoba mengubah posisi saat ini untuk aliran yang dikontrol.

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

Parameter

_Off
Posisi yang dicari relatif terhadap _Way.

_Cara
Titik awal untuk operasi offset. Lihat seekdir untuk kemungkinan nilai.

_Yang
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.

Tampilkan Nilai

Mengembalikan posisi baru atau posisi aliran yang tidak valid (seekoff (_ Nonaktif, _Way, _Which)).

Keterangan

Posisi baru ditentukan sebagai berikut:

  • Jika _Way == ios_base::beg, posisi baru adalah awal aliran plus _ Nonaktif.

  • Jika _Way == ios_base::cur, posisi baru adalah posisi aliran saat ini ditambah _ Nonaktif.

  • Jika _Way == ios_base::end, posisi baru adalah akhir dari streaming plus _ Nonaktif.

Biasanya, jika mana yang &ios_base::in nonzero, aliran input terpengaruh, dan jika yang &ios_base::out nonzero, aliran output terpengaruh. Namun, penggunaan aktual parameter ini bervariasi di antara buffer aliran turunan.

Jika fungsi berhasil mengubah posisi atau posisi aliran, fungsi mengembalikan posisi aliran yang dihasilkan atau salah satu posisi aliran yang dihasilkan. Jika tidak, ia mengembalikan posisi aliran yang tidak valid. Perilaku defaultnya adalah mengembalikan posisi aliran yang tidak valid.

basic_streambuf::seekpos

Fungsi anggota virtual yang dilindungi yang mencoba mengubah posisi saat ini untuk aliran yang dikontrol.

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

Parameter

_Sp
Posisi yang dicari.

_Yang
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis.

Tampilkan Nilai

Posisi baru, atau posisi aliran yang tidak valid. Untuk menentukan apakah posisi aliran tidak valid, bandingkan nilai yang dikembalikan dengan pos_type(off_type(-1)).

Keterangan

Posisi baru adalah _ Sp.

Biasanya, jika mana yang &ios_base::in nonzero, aliran input terpengaruh, dan jika yang &ios_base::out nonzero, aliran output terpengaruh. Namun, penggunaan aktual parameter ini bervariasi di antara buffer aliran turunan.

Jika fungsi berhasil mengubah posisi atau posisi aliran, fungsi mengembalikan posisi aliran yang dihasilkan atau salah satu posisi aliran yang dihasilkan. Jika tidak, ia mengembalikan posisi aliran yang tidak valid (-1). Perilaku defaultnya adalah mengembalikan posisi aliran yang tidak valid.

basic_streambuf::setbuf

Fungsi anggota virtual yang dilindungi yang melakukan operasi khusus untuk setiap buffer aliran turunan.

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

Parameter

_Buffer
Penunjuk ke buffer.

count
Ukuran buffer.

Tampilkan Nilai

Perilaku defaultnya adalah mengembalikan this.

Keterangan

Lihat basic_filebuf. setbuf menyediakan area memori untuk streambuf digunakan objek. Bagaimana buffer digunakan dalam didefinisikan dalam kelas turunan.

basic_streambuf::setg

Fungsi terproteksi yang menyimpan _ Gbeg di penunjuk awal, _Gnext di penunjuk berikutnya, dan _Gend di penunjuk akhir untuk buffer input.

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

Parameter

_Gbeg
Penunjuk ke awal buffer.

_Gnext
Penunjuk ke suatu tempat di tengah buffer.

_Gend
Penunjuk ke akhir buffer.

basic_streambuf::setp

Fungsi terproteksi yang menyimpan _Pbeg di penunjuk awal dan _Pend di penunjuk akhir untuk buffer output.

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

Parameter

_Pbeg
Penunjuk ke awal buffer.

_Pend
Penunjuk ke akhir buffer.

basic_streambuf::sgetc

Mengembalikan elemen saat ini tanpa mengubah posisi dalam aliran.

int_type sgetc();

Tampilkan Nilai

Elemen saat ini.

Keterangan

Jika posisi baca tersedia, fungsi anggota mengembalikan traits_type::to_int_type( *gptr). Jika tidak, itu mengembalikan underflow.

Contoh

// 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

Mengekstrak hingga menghitung karakter dari buffer input dan menyimpannya di buffer ptr yang disediakan.

Metode ini berpotensi tidak aman, karena bergantung pada pemanggil untuk memeriksa apakah nilai yang diteruskan sudah benar.

streamsize sgetn(
    char_type* ptr,
    streamsize count);

Parameter

Ptr
Buffer untuk berisi karakter yang diekstrak.

count
Jumlah elemen yang akan dibaca.

Tampilkan Nilai

Jumlah elemen yang dibaca. Untuk informasi selengkapnya, lihat melakukan streaming untuk informasi selengkapnya.

Keterangan

Fungsi anggota mengembalikan xsgetn( ptr, count).

Contoh

// 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

Fungsi anggota virtual yang dilindungi yang mengembalikan hitungan jumlah karakter yang dapat diekstrak dari aliran input dan memastikan bahwa program tidak akan tunduk pada waktu tunggu yang tidak terbatas.

virtual streamsize showmanyc();

Tampilkan Nilai

Perilaku defaultnya adalah mengembalikan nol.

basic_streambuf::snextc

Membaca elemen saat ini dan mengembalikan elemen berikut.

int_type snextc();

Tampilkan Nilai

Elemen berikutnya dalam aliran.

Keterangan

Fungsi anggota memanggil sbumpc dan, jika fungsi tersebut mengembalikan traits_type::eof, mengembalikan traits_type::eof. Jika tidak, ia mengembalikan sgetc.

Contoh

// 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

Menempatkan char_type di aliran.

int_type sputbackc(char_type _Ch);

Parameter

_Ch
Karakternya.

Tampilkan Nilai

Mengembalikan karakter atau kegagalan.

Keterangan

Jika posisi putback tersedia dan _Ch dibandingkan dengan karakter yang disimpan dalam posisi tersebut, fungsi anggota mengurangi penunjuk berikutnya untuk buffer input dan mengembalikan traits_type::to_int_type( _Ch). Jika tidak, itu mengembalikan pbackfail( _Ch).

Contoh

// 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

Menempatkan karakter ke dalam aliran.

int_type sputc(char_type _Ch);

Parameter

_Ch
Karakternya.

Tampilkan Nilai

Mengembalikan karakter, jika berhasil.

Keterangan

write position Jika tersedia, fungsi anggota menyimpan _Ch dalam posisi tulis, menaikkan pointer berikutnya untuk buffer output, dan mengembalikan traits_type::to_int_type( _Ch). Jika tidak, itu mengembalikan overflow( _Ch).

Contoh

// 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

Menempatkan string karakter ke dalam aliran.

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

Parameter

Ptr
String karakter.

count
Jumlah karakter.

Tampilkan Nilai

Jumlah karakter yang disisipkan ke dalam aliran.

Keterangan

Fungsi anggota mengembalikan xsputn( ptr, count). Untuk informasi selengkapnya, lihat bagian Keterangan anggota ini untuk informasi selengkapnya.

Contoh

// 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

Pindah melewati elemen saat ini di aliran.

void stossc();

Keterangan

Fungsi anggota memanggil sbumpc. Implementasi tidak diperlukan untuk menyediakan fungsi anggota ini.

Contoh

// 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

Mendapatkan karakter dari aliran.

int_type sungetc();

Tampilkan Nilai

Mengembalikan karakter atau kegagalan.

Keterangan

Jika posisi putback tersedia, fungsi anggota mengurangi pointer berikutnya untuk buffer input dan mengembalikan traits_type::to_int_type( *gptr). Namun, tidak selalu mungkin untuk menentukan karakter terakhir yang dibaca sehingga dapat ditangkap dalam status buffer saat ini. Jika ini benar, maka fungsi mengembalikan pbackfail. Untuk menghindari situasi ini, lacak karakter untuk diletakkan kembali dan panggil sputbackc(ch), yang tidak akan gagal asalkan Anda tidak memanggilnya di awal aliran dan Anda tidak mencoba mengembalikan lebih dari satu karakter.

Contoh

// 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

Menukar nilai dalam objek ini untuk nilai dalam objek yang disediakan basic_streambuf .

void swap(basic_streambuf& right);

Parameter

right
Referensi lvalue ke basic_streambuf objek yang digunakan untuk bertukar nilai.

Keterangan

Fungsi anggota yang dilindungi bertukar dengan tepat semua penunjuk yang mengontrol input buffer dan output buffer. Ini juga bertukar right.getloc() dengan locale objek .

basic_streambuf::sync

Fungsi virtual terproteksi yang mencoba menyinkronkan aliran terkontrol dengan aliran eksternal terkait.

virtual int sync();

Tampilkan Nilai

Jika fungsi tidak berhasil, fungsi akan mengembalikan -1. Perilaku defaultnya adalah mengembalikan nol.

Keterangan

sync melibatkan penulisan elemen apa pun antara penunjuk awal dan berikutnya untuk buffer output. Ini tidak melibatkan menempatkan kembali elemen apa pun antara pointer berikutnya dan akhir untuk buffer input.

basic_streambuf::traits_type

Mengaitkan nama jenis dengan parameter templat Tr .

typedef Tr traits_type;

basic_streambuf::uflow

Fungsi virtual yang dilindungi yang mengekstrak elemen saat ini dari aliran input.

virtual int_type uflow();

Tampilkan Nilai

Elemen saat ini.

Keterangan

Fungsi anggota virtual yang dilindungi mencoba mengekstrak ch elemen saat ini dari aliran input, lalu memajukan posisi aliran saat ini, dan mengembalikan elemen sebagai traits_type::to_int_type( ch). Ini dapat melakukannya dengan berbagai cara:

  • Jika posisi baca tersedia, dibutuhkan ch sebagai elemen yang disimpan dalam posisi baca dan memajukan pointer berikutnya untuk buffer input.

  • Ini dapat membaca elemen secara langsung, dari beberapa sumber eksternal, dan mengirimkannya sebagai nilai ch.

  • Untuk buffer aliran dengan aliran input dan output umum, ia dapat membuat posisi baca tersedia dengan menulis, ke beberapa tujuan eksternal, beberapa atau semua elemen antara pointer awal dan berikutnya untuk buffer output. Atau dapat mengalokasikan penyimpanan baru atau tambahan untuk buffer input. Fungsi kemudian membaca, dari beberapa sumber eksternal, satu atau beberapa elemen.

Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof, atau melemparkan pengecualian. Jika tidak, elemen ini mengembalikan elemen ch saat ini dalam aliran input, dikonversi seperti yang dijelaskan di atas, dan memajukan penunjuk berikutnya untuk buffer input. Perilaku defaultnya adalah memanggil underflow dan, jika fungsi tersebut mengembalikan traits_type::eof, untuk mengembalikan traits_type::eof. Jika tidak, fungsi mengembalikan ch elemen saat ini dalam aliran input, dikonversi seperti yang dijelaskan sebelumnya, dan memajukan penunjuk berikutnya untuk buffer input.

basic_streambuf::underflow

Fungsi virtual yang dilindungi untuk mengekstrak elemen saat ini dari aliran input.

virtual int_type underflow();

Tampilkan Nilai

Elemen saat ini.

Keterangan

Fungsi anggota virtual yang dilindungi berusaha mengekstrak elemen ch saat ini dari aliran input, tanpa memajukan posisi aliran saat ini, dan mengembalikannya sebagai traits_type::to_int_type( ch). Ini dapat melakukannya dengan berbagai cara:

  • Jika posisi baca tersedia, ch adalah elemen yang disimpan dalam posisi baca. Untuk informasi selengkapnya, lihat bagian Keterangan dari Kelas basic_streambuf.

  • Ini dapat membuat posisi baca tersedia dengan mengalokasikan penyimpanan baru atau tambahan untuk buffer input, kemudian membaca di, dari beberapa sumber eksternal, satu atau beberapa elemen. Untuk informasi selengkapnya, lihat bagian Keterangan dari Kelas basic_streambuf.

Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof() atau melemparkan pengecualian. Jika tidak, ia mengembalikan elemen saat ini dalam aliran input, dikonversi seperti yang dijelaskan sebelumnya. Perilaku defaultnya adalah mengembalikan traits_type::eof().

Fungsi virtual underflow , dengan fungsi sinkronisasi dan luapan , mendefinisikan karakteristik streambufkelas -turunan. Setiap kelas turunan mungkin mengimplementasikan underflow secara berbeda, tetapi antarmuka dengan kelas aliran panggilan sama.

Fungsi underflow ini paling sering dipanggil oleh fungsi publik streambuf seperti sgetc dan sgetn ketika area get kosong, tetapi kelas lain, termasuk kelas stream, dapat memanggil underflow kapan saja.

Fungsi ini underflow memasok area get dengan karakter dari sumber input. Jika area dapatkan berisi karakter, underflow mengembalikan karakter pertama. Jika area get kosong, ia mengisi area get dan mengembalikan karakter berikutnya (yang dibiaarkan di area get). Jika tidak ada lagi karakter yang tersedia, maka underflow mengembalikan EOF dan membiarkan area get kosong.

strstreambuf Di kelas , underflow sesuaikan penunjuk mesir untuk mengakses penyimpanan yang dialokasikan secara dinamis oleh panggilan ke overflow.

basic_streambuf::xsgetn

Fungsi virtual yang dilindungi untuk mengekstrak elemen dari aliran input.

Metode ini berpotensi tidak aman, karena bergantung pada pemanggil untuk memeriksa apakah nilai yang diteruskan sudah benar.

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

Parameter

Ptr
Buffer untuk berisi karakter yang diekstrak.

count
Jumlah elemen yang akan diekstrak.

Tampilkan Nilai

Jumlah elemen yang diekstrak.

Keterangan

Fungsi anggota virtual yang dilindungi mengekstrak hingga menghitung elemen dari aliran input, seolah-olah dengan panggilan berulang ke sbumpc, dan menyimpannya dalam array yang dimulai di ptr. Ini mengembalikan jumlah elemen yang diekstrak.

basic_streambuf::xsputn

Fungsi virtual yang dilindungi untuk menyisipkan elemen ke dalam aliran output.

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

Parameter

Ptr
Arahkan ke elemen untuk disisipkan.

count
Jumlah elemen yang akan disisipkan.

Tampilkan Nilai

Jumlah elemen yang dimasukkan ke dalam aliran.

Keterangan

Fungsi anggota virtual yang dilindungi menyisipkan hingga menghitung elemen ke dalam aliran output, seolah-olah dengan panggilan berulang ke sputc, dari array yang dimulai di ptr. Penyisipan karakter ke aliran output berhenti setelah semua karakter hitungan ditulis, atau jika panggilan sputc( count) akan mengembalikan traits::eof(). Ini mengembalikan jumlah elemen yang disisipkan.

Baca juga

Keamanan utas di Pustaka Standar C++
Pemrograman iostream
Konvensi iostreams