Aracılığıyla paylaş


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_iteratortü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_iteratortü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_iteratorakış 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_iteratorherhangi 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_iteratortür.

typedef typename traits_type::int_type int_type;

Açıklamalar

türü, için Traits::int_typebir 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. rdbufve sonunda türünde CharTypebir 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_iteratortü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