Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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++