Bagikan melalui


Kelas basic_stringbuf

Menjelaskan buffer aliran yang mengontrol transmisi elemen jenis Elem, yang sifat karakternya ditentukan oleh kelas Tr, ke dan dari urutan elemen yang disimpan dalam objek array.

Sintaks

template <class Elem, class Tr = char_traits<Elem>,
    class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>

Parameter

Alokasi
Kelas alokator.

Elem
Jenis elemen dasar string.

Tr
Sifat karakter yang dikhususkan pada elemen dasar string.

Keterangan

Objek dialokasikan, diperluas, dan dibebaskan seperlunya untuk mengakomodasi perubahan dalam urutan.

Objek kelas basic_stringbuf<Elem, Tr,Alloc>menyimpan salinan ios_base::argumen openmode dari konstruktornya sebagai modenya:stringbuf

  • Jika mode & ios_base::in bukan nol, buffer input dapat diakses. Untuk informasi selengkapnya, lihat Kelas basic_streambuf.

  • Jika mode & ios_base::out bukan nol, buffer output dapat diakses.

Konstruktor

Konstruktor Deskripsi
basic_stringbuf Membuat objek jenis basic_stringbuf.

Typedefs

Nama jenis Deskripsi
allocator_type Jenisnya adalah sinonim untuk parameter templat Alloc.
char_type Mengaitkan nama jenis dengan parameter templat Elem .
int_type Membuat jenis ini dalam basic_filebufcakupan yang setara dengan jenis nama yang sama dalam cakupan Tr .
off_type Membuat jenis ini dalam basic_filebufcakupan yang setara dengan jenis nama yang sama dalam cakupan Tr .
pos_type Membuat jenis ini dalam basic_filebufcakupan yang setara dengan jenis nama yang sama dalam cakupan Tr .
traits_type Mengaitkan nama jenis dengan parameter templat Tr .

Fungsi anggota

Fungsi anggota Deskripsi
tumpah Fungsi virtual terlindungi yang dapat dipanggil ketika karakter baru dimasukkan ke dalam buffer penuh.
pbackfail Fungsi anggota virtual yang dilindungi mencoba mengembalikan elemen ke dalam buffer input, lalu menjadikannya elemen saat ini (ditujukkan ke penunjuk berikutnya).
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.
Str Mengatur atau mendapatkan teks dalam buffer string tanpa mengubah posisi tulis.
tukar
aliran bawah Fungsi anggota virtual yang dilindungi untuk mengekstrak elemen saat ini dari aliran input.

Persyaratan

Header:<sstream>

Namespace: std

basic_stringbuf::allocator_type

Jenisnya adalah sinonim untuk parameter templat Alloc.

typedef Alloc allocator_type;

basic_stringbuf::basic_stringbuf

Membuat objek jenis basic_stringbuf.

basic_stringbuf(
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

basic_stringbuf(
    const basic_string<Elem, Tr, Alloc>& str,
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

Parameter

_Modus
Salah satu enumerasi dalam ios_base::openmode.

Str
Objek jenis basic_string.

Keterangan

Konstruktor pertama menyimpan pointer null di semua pointer yang mengontrol buffer input dan buffer output. Untuk informasi selengkapnya, lihat bagian Keterangan dari Kelas basic_streambuf. Ini juga menyimpan _Mode sebagai mode stringbuf. Untuk informasi selengkapnya, lihat bagian Keterangan dari Kelas basic_stringbuf.

Konstruktor kedua mengalokasikan salinan urutan yang dikontrol oleh str objek string. Jika _Mode & ios_base::in bukan nol, ia mengatur buffer input untuk mulai membaca di awal urutan. Jika _Mode & ios_base::out bukan nol, ia mengatur buffer output untuk mulai menulis pada awal urutan. Ini juga menyimpan _Mode sebagai mode stringbuf. Untuk informasi selengkapnya, lihat bagian Keterangan dari Kelas basic_stringbuf.

basic_stringbuf::char_type

Mengaitkan nama jenis dengan parameter templat Elem .

typedef Elem char_type;

basic_stringbuf::int_type

Membuat jenis ini dalam cakupan basic_filebuf setara dengan jenis nama yang sama dalam Tr cakupan.

typedef typename traits_type::int_type int_type;

basic_stringbuf::off_type

Membuat jenis ini dalam cakupan basic_filebuf setara dengan jenis nama yang sama dalam Tr cakupan.

typedef typename traits_type::off_type off_type;

basic_stringbuf::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. Jika tidak, mengembalikan traits_type::not_eof(_ Meta).

Keterangan

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

  • Jika posisi tulis tersedia, ia dapat menyimpan elemen 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. Memperluas buffer output dengan cara ini juga memperluas buffer input terkait.

basic_stringbuf::p backfail

Fungsi anggota virtual yang dilindungi mencoba mengembalikan elemen ke dalam buffer 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. Jika tidak, mengembalikan traits_type::not_eof(_ Meta).

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 byte = traits_type::to_char_type(_ Meta). Fungsi ini dapat mengembalikan elemen dengan berbagai cara:

  • Jika posisi putback tersedia, dan elemen yang disimpan di sana dibandingkan dengan byte, itu dapat mengurangi pointer berikutnya untuk buffer input.

  • Jika posisi putback tersedia, dan jika mode stringbuf mengizinkan urutan diubah ( mode & ios_base::out nonzero), itu dapat menyimpan byte ke posisi putback dan menurunkan pointer berikutnya untuk buffer input.

basic_stringbuf::p os_type

Membuat jenis ini dalam cakupan basic_filebuf setara dengan jenis nama yang sama dalam Tr cakupan.

typedef typename traits_type::pos_type pos_type;

basic_stringbuf::seekoff

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

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

Parameter

_Off
Posisi yang dicari relatif terhadap _Way. Untuk informasi selengkapnya, lihat basic_stringbuf::off_type.

_Jalan
Titik awal untuk operasi offset. Lihat ios_base::seekdir untuk kemungkinan nilai.

_Modus
Menentukan mode untuk posisi penunjuk. Defaultnya adalah memungkinkan Anda mengubah posisi baca dan tulis. Untuk informasi selengkapnya, lihat ios_base::openmode.

Tampilkan Nilai

Mengembalikan posisi baru atau posisi aliran yang tidak valid.

Keterangan

Untuk objek kelas basic_stringbuf<Elem, Tr, Alloc>, posisi aliran murni terdiri dari offset aliran. Offset nol menunjuk elemen pertama dari urutan yang dikontrol.

Posisi baru ditentukan sebagai berikut:

  • Jika _Way == ios_base::beg, posisi baru adalah awal aliran ditambah _Off.

  • Jika _Way == ios_base::cur, posisi baru adalah posisi streaming saat ini ditambah _Off.

  • Jika _Way == ios_base::end, posisi baru adalah akhir dari streaming ditambah _Off.

Jika _Mode & ios_base::in bukan nol, fungsi mengubah posisi berikutnya untuk dibaca di buffer input. Jika _Mode & ios_base::out bukan nol, fungsi mengubah posisi berikutnya untuk menulis di buffer output. Agar aliran terpengaruh, buffer-nya harus ada. Agar operasi penempatan berhasil, posisi aliran yang dihasilkan harus berada dalam urutan yang dikontrol. Jika fungsi memengaruhi kedua posisi aliran, _Way harus ios_base::beg atau ios_base::end dan kedua aliran diposisikan pada elemen yang sama. Jika tidak (atau jika tidak ada posisi yang terpengaruh), operasi penempatan gagal.

Jika fungsi berhasil mengubah salah satu atau kedua posisi aliran, fungsi akan mengembalikan posisi aliran yang dihasilkan. Jika tidak, itu gagal dan mengembalikan posisi aliran yang tidak valid.

basic_stringbuf::seekpos

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

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

Parameter

_Sp
Posisi yang dicari.

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

Tampilkan Nilai

Jika fungsi berhasil mengubah salah satu atau kedua posisi aliran, fungsi akan mengembalikan posisi aliran yang dihasilkan. Jika tidak, itu gagal dan mengembalikan posisi aliran yang tidak valid. Untuk menentukan apakah posisi aliran tidak valid, bandingkan nilai yang dikembalikan dengan pos_type(off_type(-1)).

Keterangan

Untuk objek kelas basic_stringbuf<Elem, Tr, Alloc>, posisi aliran terdiri murni dari offset aliran. Offset nol menunjuk elemen pertama dari urutan yang dikontrol. Posisi baru ditentukan oleh _ Sp.

Jika mode &ios_base::in bukan nol, fungsi mengubah posisi berikutnya untuk dibaca dalam buffer input. Jika mode & ios_base::out bukan nol, fungsi mengubah posisi berikutnya untuk menulis dalam buffer output. Agar aliran terpengaruh, buffer-nya harus ada. Agar operasi penempatan berhasil, posisi aliran yang dihasilkan harus berada dalam urutan yang dikontrol. Jika tidak (atau jika tidak ada posisi yang terpengaruh), operasi penempatan gagal.

basic_stringbuf::str

Mengatur atau mendapatkan teks dalam buffer string tanpa mengubah posisi tulis.

basic_string<Elem, Tr, Alloc> str() const;
void str(
    const basic_string<Elem, Tr, Alloc>& _Newstr);

Parameter

_Newstr
String baru.

Tampilkan Nilai

Mengembalikan objek kelas basic_string<Elem, Tr, Alokasi> , yang urutannya dikontrol adalah salinan urutan yang dikendalikan oleh .*this

Keterangan

Fungsi anggota pertama mengembalikan objek kelas basic_string<Elem, Tr, Alloc>, yang urutannya dikontrol adalah salinan urutan yang dikendalikan oleh *this. Urutan yang disalin tergantung pada mode stringbuf yang disimpan:

  • Jika mode & ios_base::out bukan nol dan buffer output ada, urutannya adalah seluruh buffer output ( elemen epptr - pbase dimulai dengan ).pbase

  • Jika mode & ios_base::in bukan nol dan buffer input ada, urutannya adalah seluruh buffer input ( - dimulai dengan ).eback

  • Jika tidak, urutan yang disalin kosong.

Fungsi anggota kedua membatalkan alokasi urutan apa pun yang saat ini dikendalikan oleh *this. Kemudian mengalokasikan salinan urutan yang dikendalikan oleh _Newstr. Jika mode & ios_base::in bukan nol, mode mengatur buffer input untuk mulai membaca di awal urutan. Jika mode & ios_base::out bukan nol, mode mengatur buffer output untuk mulai menulis di awal urutan.

Contoh

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

using namespace std;

int main( )
{
   basic_string<char> i( "test" );
   stringstream ss;

   ss.rdbuf( )->str( i );
   cout << ss.str( ) << endl;

   ss << "z";
   cout << ss.str( ) << endl;

   ss.rdbuf( )->str( "be" );
   cout << ss.str( ) << endl;
}
test
zest
be

basic_stringbuf::traits_type

Mengaitkan nama jenis dengan parameter templat Tr .

typedef Tr traits_type;

Keterangan

Jenisnya adalah sinonim untuk parameter templat Tr.

basic_stringbuf::underflow

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

virtual int_type underflow();

Tampilkan Nilai

Jika fungsi tidak berhasil, fungsi akan mengembalikan traits_type::eof. Jika tidak, ia mengembalikan elemen saat ini dalam aliran input, yang dikonversi.

Keterangan

Fungsi anggota virtual yang dilindungi mencoba mengekstrak elemen byte saat ini dari buffer input, memajukan posisi aliran saat ini, dan mengembalikan elemen sebagai traits_type::to_int_type( byte). Ini dapat melakukannya dengan satu cara: Jika posisi baca tersedia, dibutuhkan byte sebagai elemen yang disimpan dalam posisi baca dan memajukan pointer berikutnya untuk buffer input.

basic_streambuf::swap

Menukar konten buffer string ini dengan buffer string lain.

void basic_stringbuf<T>::swap(basic_stringbuf& other)

Parameter

lain
basic_stringbuf yang isinya akan ditukar dengan basic_stringbuf ini.

basic_stringbuf::operator=

Menetapkan konten basic_stringbuf di sisi kanan operator ke basic_stringbuf di sisi kiri.

basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)

Parameter

lain
Basic_stringbuf yang kontennya, termasuk sifat lokal, akan ditetapkan ke stringbuf di sisi kiri operator.

Lihat juga

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