istreambuf_iterator Sınıfı
Sınıf şablonu istreambuf_iterator, karakter öğelerini depoladığı bir nesne aracılığıyla eriştiği bir giriş akışı arabelleğinden, CharType, Traits> tür işaretçisinden basic_streambuf
<ayıklayan bir giriş yineleyici nesnesi açıklar.
Sözdizimi
template <class CharType class Traits = char_traits <CharType>>
class istreambuf_iterator
: public iterator<input_iterator_tag, CharType, typename Traits ::off_type, CharType*, CharType&>
Parametreler
CharType
istreambuf_iterator için karakter türünü temsil eden tür.
Özellik
istreambuf_iterator için karakter türünü temsil eden tür. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değer CharType'tırchar_traits
<>.
Açıklamalar
istreambuf_iterator sınıfının, bir giriş yineleyici için gereksinimleri karşılaması gerekir.
Sınıf istreambuf_iterator nesnesini null olmayan bir depolanmış işaretçiyle oluşturup artırdıktan sonra, nesne ilişkili giriş akışından CharType türünde bir nesneyi ayıklamayı ve depolamayı etkili bir şekilde dener. Ancak, nesne başvurulmadan veya kopyalanana kadar ayıklama gecikebilir. Ayıklama işlemi başarısız olursa, nesne etkili bir şekilde depolanan işaretçinin yerini alır, böylece bir dizi sonu gösterge oluşturur.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
istreambuf_iterator | Giriş akışındaki karakterleri okumak için başlatılan bir istreambuf_iterator oluşturur. |
Tür tanımları
Tür adı | Açıklama |
---|---|
char_type | öğesinin karakter türünü sağlayan bir tür ostreambuf_iterator . |
int_type | için tamsayı türü sağlayan bir istreambuf_iterator tür. |
istream_type | akış türü için sağlayan bir tür istream_iterator . |
streambuf_type | akış türü için sağlayan bir tür istreambuf_iterator . |
traits_type | karakterinin karakter özellikleri türünü sağlayan bir istream_iterator tür. |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
eşit | İki giriş akışı önbelleği yineleyicisi arasındaki eşitliği sınar. |
İşleçler
Operator | Açıklama |
---|---|
operatör* | Başvuru kaldırma işleci akıştaki sonraki karakteri döndürür. |
operator++ | Giriş akışındaki sonraki öğeyi döndürür ya da artırmadan önce nesneyi kopyalar ve kopyayı döndürür. |
Gereksinimler
Üst bilgi:<yineleyici>
Ad alanı: std
istreambuf_iterator::char_type
öğesinin karakter türünü sağlayan bir tür ostreambuf_iterator
.
typedef CharType char_type;
Açıklamalar
Türü, CharType şablon parametresinin eş anlamlısıdır.
Örnek
// 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
İki giriş akışı arabelleği yineleyicisi arasındaki denkliği test eder.
bool equal(const istreambuf_iterator<CharType, Traits>& right) const;
Parametreler
Sağ
Eşitliğin denetlendiği yineleyici.
Dönüş Değeri
true
her ikisi de istreambuf_iterator
akış sonu yineleyicileriyse veya akış sonu yineleyicisi değilse; değilse false
.
Açıklamalar
Bir aralık geçerli konuma ve akış sonu yineleyicisi tarafından istreambuf_iterator
tanımlanır, ancak akış sonu olmayan tüm yineleyiciler üye işlevi altında equal
eşdeğer olduğundan, s kullanarak istreambuf_iterator
herhangi bir alt düzenleme tanımlamak mümkün değildir. ==
ve !=
işleçleri aynı semantiklere sahiptir.
Örnek
// 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
için tamsayı türü sağlayan bir istreambuf_iterator
tür.
typedef typename traits_type::int_type int_type;
Açıklamalar
türü, için Traits::int_type
bir eş anlamlıdır.
Örnek
// 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
akış türü için sağlayan bir tür istreambuf_iterator
.
typedef basic_istream<CharType, Traits> istream_type;
Açıklamalar
Türü CharType, Traits için basic_istream
<bir eş anlamlıdır>.
Örnek
bildirme ve kullanma istream_type
örneği için bkz. istreambuf_iterator.
istreambuf_iterator::istreambuf_iterator
Giriş akışındaki karakterleri okumak için başlatılan bir istreambuf_iterator oluşturur.
istreambuf_iterator(streambuf_type* strbuf = 0) throw();
istreambuf_iterator(istream_type& _Istr) throw();
Parametreler
strbuf
öğesinin eklendiği istreambuf_iterator
giriş akışı arabelleği.
_Istr
öğesinin eklendiği istreambuf_iterator
giriş akışı.
Açıklamalar
İlk oluşturucu, giriş stream-buffer işaretçisini strbuf ile başlatır. İkinci oluşturucu, giriş stream-buffer işaretçisini _Istr ile başlatır. rdbuf
ve sonunda türünde CharType
bir nesneyi ayıklamayı ve depolamayı dener.
Örnek
// 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*
Başvuru kaldırma işleci akıştaki sonraki karakteri döndürür.
CharType operator*() const;
Dönüş Değeri
Akıştaki sonraki karakter.
Örnek
// 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++
Giriş akışındaki sonraki öğeyi döndürür ya da artırmadan önce nesneyi kopyalar ve kopyayı döndürür.
istreambuf_iterator<CharType, Traits>& operator++();
istreambuf_iterator<CharType, Traits> operator++(int);
Dönüş Değeri
veya istreambuf_iterator
başvurusu istreambuf_iterator
.
Açıklamalar
İlk işleç sonunda ilişkili giriş akışından türdeki CharType
bir nesneyi ayıklamayı ve depolamayı dener. İkinci işleç nesnenin bir kopyasını oluşturur, nesneyi artırır ve sonra kopyayı döndürür.
Örnek
// 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
istreambuf_iterator akış türünü sağlayan bir tür.
typedef basic_streambuf<CharType, Traits> streambuf_type;
Açıklamalar
Türü CharType, Traits için basic_streambuf
<bir eş anlamlıdır>.
Örnek
bildirme ve kullanma istreambuf_type
örneği için bkz. istreambuf_iterator.
istreambuf_iterator::traits_type
karakterinin karakter özellikleri türünü sağlayan bir istream_iterator
tür.
typedef Traits traits_type;
Açıklamalar
Tür, şablon parametresi Traits için bir eş anlamlıdır.
Örnek
// 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 , ' ' , '.' );
}
Ayrıca bkz.
iterator Yapısı
<Yineleyici>
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu