Bagikan melalui


Kelas istreambuf_iterator

Templat kelas istreambuf_iterator menjelaskan objek iterator input yang mengekstrak elemen karakter dari buffer aliran input, yang diaksesnya melalui objek yang disimpannya, dari jenis penunjuk ke basic_streambuf<CharType, Traits.>

Sintaks

template <class CharType, class Traits = char_traits <CharType>>
class istreambuf_iterator
: public iterator<input_iterator_tag, CharType, typename Traits ::off_type, CharType*, CharType&>

Parameter

CharType
Jenis yang mewakili jenis karakter untuk istreambuf_iterator.

Sifat
Jenis yang mewakili jenis karakter untuk istreambuf_iterator. Argumen ini bersifat opsional dan nilai defaultnya adalah char_traits<CharType>.

Keterangan

Kelas istreambuf_iterator harus memenuhi persyaratan untuk iterator input.

Setelah membuat atau menaikkan objek kelas istreambuf_iterator dengan pointer yang disimpan non-null, objek secara efektif mencoba mengekstrak dan menyimpan objek jenis CharType dari aliran input terkait. Ekstraksi mungkin tertunda, namun, sampai objek didereferensikan atau disalin. Jika ekstraksi gagal, objek secara efektif mengganti pointer yang disimpan dengan pointer null, sehingga membuat indikator akhir urutan.

Konstruktor

Konstruktor Deskripsi
istreambuf_iterator Membuat yang istreambuf_iterator diinisialisasi untuk membaca karakter dari aliran input.

Typedefs

Nama jenis Deskripsi
char_type Jenis yang menyediakan jenis karakter .ostreambuf_iterator
int_type Jenis yang menyediakan jenis bilangan istreambuf_iteratorbulat untuk .
istream_type Jenis yang menyediakan jenis aliran .istream_iterator
streambuf_type Jenis yang menyediakan jenis aliran .istreambuf_iterator
traits_type Jenis yang menyediakan jenis sifat karakter dari istream_iterator.

Fungsi anggota

Fungsi anggota Deskripsi
sama Pengujian untuk kesetaraan antara dua iterator buffer aliran input.

Operator

Operator Deskripsi
Operator* Operator dereferensi mengembalikan karakter berikutnya dalam aliran.
operator++ Mengembalikan karakter berikutnya dari aliran input atau menyalin objek sebelum menaikkannya dan mengembalikan salinan.

Persyaratan

Header:<iterator>

Namespace: std

istreambuf_iterator::char_type

Jenis yang menyediakan jenis karakter .ostreambuf_iterator

typedef CharType char_type;

Keterangan

Jenisnya adalah sinonim untuk parameter templat CharType.

Contoh

// istreambuf_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
#include <algorithm>

int main( )
{
   using namespace std;

   typedef istreambuf_iterator<char>::char_type CHT1;
   typedef istreambuf_iterator<char>::traits_type CHTR1;

   cout << "(Try the example: 'So many dots to be done'\n"
        << " then an Enter key to insert into the output,\n"
        << " & use a ctrl-Z Enter key combination to exit): ";

   // istreambuf_iterator for input stream
   istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );
   ostreambuf_iterator<char> charOut ( cout );

   // Used in conjunction with replace_copy algorithm
   // to insert into output stream and replace spaces
   // with dot-separators
   replace_copy ( charInBuf , istreambuf_iterator<char>( ),
        charOut , ' ' , '.' );
}

istreambuf_iterator::equal

Pengujian untuk kesetaraan antara dua iterator buffer aliran input.

bool equal(const istreambuf_iterator<CharType, Traits>& right) const;

Parameter

right
Iterator untuk memeriksa kesetaraan.

Tampilkan Nilai

true jika keduanya istreambuf_iteratoradalah iterator end-of-stream atau jika keduanya tidak merupakan iterator end-of-stream; jika tidak false.

Keterangan

Rentang didefinisikan oleh istreambuf_iterator ke posisi saat ini dan iterator end-of-stream, tetapi karena semua iterator aliran non-akhir setara di bawah equal fungsi anggota, tidak dimungkinkan untuk menentukan subranges apa pun menggunakan istreambuf_iterators. Operator == dan != memiliki semantik yang sama.

Contoh

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

int main( )
{
   using namespace std;

   cout << "(Try the example: 'Hello world!'\n"
        << " then an Enter key to insert into the output,\n"
        << " & use a ctrl-Z Enter key combination to exit): ";

   istreambuf_iterator<char> charReadIn1 ( cin );
   istreambuf_iterator<char> charReadIn2 ( cin );

   bool b1 = charReadIn1.equal ( charReadIn2 );

   if (b1)
      cout << "The iterators are equal." << endl;
   else
      cout << "The iterators are not equal." << endl;
}

istreambuf_iterator::int_type

Jenis yang menyediakan jenis bilangan istreambuf_iteratorbulat untuk .

typedef typename traits_type::int_type int_type;

Keterangan

Jenisnya adalah sinonim untuk Traits::int_type.

Contoh

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

int main( )
{
   using namespace std;
   istreambuf_iterator<char>::int_type inttype1 = 100;
   cout << "The inttype1 = " << inttype1 << "." << endl;
}
/* Output:
The inttype1 = 100.
*/

istreambuf_iterator::istream_type

Jenis yang menyediakan jenis aliran .istreambuf_iterator

typedef basic_istream<CharType, Traits> istream_type;

Keterangan

Jenisnya adalah sinonim untuk basic_istream<CharType, Traits.>

Contoh

Lihat istreambuf_iterator untuk contoh cara mendeklarasikan dan menggunakan istream_type.

istreambuf_iterator::istreambuf_iterator

Membuat istreambuf_iterator yang diinisialisasi untuk membaca karakter dari aliran input.

istreambuf_iterator(streambuf_type* strbuf = 0) throw();
istreambuf_iterator(istream_type& _Istr) throw();

Parameter

strbuf
Buffer aliran input tempat istreambuf_iterator sedang dilampirkan.

_Istr
Aliran input tempat istreambuf_iterator sedang dilampirkan.

Keterangan

Konstruktor pertama menginisialisasi penunjuk stream-buffer input dengan strbuf. Konstruktor kedua menginisialisasi penunjuk buffer aliran input dengan _Istr. rdbuf, dan kemudian akhirnya mencoba mengekstrak dan menyimpan objek jenis CharType.

Contoh

// istreambuf_iterator_istreambuf_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
   using namespace std;

   // Following declarations will not compile:
   istreambuf_iterator<char>::istream_type &istrm = cin;
   istreambuf_iterator<char>::streambuf_type *strmbf = cin.rdbuf( );

   cout << "(Try the example: 'Oh what a world!'\n"
      << " then an Enter key to insert into the output,\n"
      << " & use a ctrl-Z Enter key combination to exit): ";
   istreambuf_iterator<char> charReadIn ( cin );
   ostreambuf_iterator<char> charOut ( cout );

   // Used in conjunction with replace_copy algorithm
   // to insert into output stream and replace spaces
   // with hyphen-separators
   replace_copy ( charReadIn , istreambuf_iterator<char>( ),
      charOut , ' ' , '-' );
}

istreambuf_iterator::operator*

Operator dereferensi mengembalikan karakter berikutnya dalam aliran.

CharType operator*() const;

Tampilkan Nilai

Karakter berikutnya dalam aliran.

Contoh

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

int main( )
{
   using namespace std;

   cout << "Type string of characters & enter to output it,\n"
      << " with stream buffer iterators,(try: 'I'll be back.')\n"
      << " repeat as many times as desired,\n"
      << " then keystroke ctrl-Z Enter to exit program: ";
   istreambuf_iterator<char> inpos ( cin );
   istreambuf_iterator<char> endpos;
   ostreambuf_iterator<char> outpos ( cout );
   while ( inpos != endpos )
   {
*outpos = *inpos;   //Put value of outpos equal to inpos
      ++inpos;
      ++outpos;
   }
}

istreambuf_iterator::operator++

Mengembalikan karakter berikutnya dari aliran input atau menyalin objek sebelum menaikkannya dan mengembalikan salinan.

istreambuf_iterator<CharType, Traits>& operator++();
istreambuf_iterator<CharType, Traits> operator++(int);

Tampilkan Nilai

istreambuf_iterator Atau referensi ke istreambuf_iterator.

Keterangan

Operator pertama akhirnya mencoba mengekstrak dan menyimpan objek jenis CharType dari aliran input terkait. Operator kedua membuat salinan objek, menaikkan objek, lalu mengembalikan salinan.

Contoh

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

int main( )
{
   using namespace std;

   cout << "Type string of characters & enter to output it,\n"
      << " with stream buffer iterators,(try: 'I'll be back.')\n"
      << " repeat as many times as desired,\n"
      << " then keystroke ctrl-Z Enter to exit program: ";
   istreambuf_iterator<char> inpos ( cin );
   istreambuf_iterator<char> endpos;
   ostreambuf_iterator<char> outpos ( cout );
   while ( inpos != endpos )
   {
      *outpos = *inpos;
      ++inpos;   //Increment istreambuf_iterator
      ++outpos;
   }
}

istreambuf_iterator::streambuf_type

Jenis yang menyediakan jenis aliran istreambuf_iterator.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Keterangan

Jenisnya adalah sinonim untuk basic_streambuf<CharType, Traits.>

Contoh

Lihat istreambuf_iterator untuk contoh cara mendeklarasikan dan menggunakan istreambuf_type.

istreambuf_iterator::traits_type

Jenis yang menyediakan jenis sifat karakter dari istream_iterator.

typedef Traits traits_type;

Keterangan

Jenisnya adalah sinonim untuk parameter templat Traits.

Contoh

// istreambuf_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
#include <algorithm>

int main( )
{
   using namespace std;

   typedef istreambuf_iterator<char>::char_type CHT1;
   typedef istreambuf_iterator<char>::traits_type CHTR1;

   cout << "(Try the example: 'So many dots to be done'\n"
        << " then an Enter key to insert into the output,\n"
        << " & use a ctrl-Z Enter key combination to exit): ";

   // istreambuf_iterator for input stream
   istreambuf_iterator< CHT1, CHTR1> charInBuf ( cin );
   ostreambuf_iterator<char> charOut ( cout );

   // Used in conjunction with replace_copy algorithm
   // to insert into output stream and replace spaces
   // with dot-separators
   replace_copy ( charInBuf , istreambuf_iterator<char>( ),
        charOut , ' ' , '.' );
}

Lihat juga

Iterator Struct
<iterator>
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++