ostreambuf_iterator Class
クラス テンプレート ostreambuf_iterator は、抽出演算子 >> を使用して連続する文字要素を出力ストリームに書き込む出力反復子オブジェクトを表します。 ostreambuf_iterator
は、出力ストリームに挿入されるオブジェクトの型がジェネリック型ではなく文字である点が、ostream_iterator クラスのオブジェクトとは異なります。
構文
template <class CharType = char class Traits = char_traits <CharType>>
パラメーター
CharType
ostreambuf_iterator の文字型を表す型。 この引数は省略可能であり、既定値は char
です。
Traits
ostreambuf_iterator の文字型を表す型。 この引数は省略可能であり、既定値は char_traits
<CharType> です。
解説
ostreambuf_iterator クラスは出力反復子の要件を満たす必要があります。 アルゴリズムは ostreambuf_iterator
を使用して出力ストリームに直接書き込むことができます。 このクラスは、生の (フォーマットされていない) I/O ストリームに文字の形式でアクセスできる低レベルのストリームの反復子を提供し、高レベルのストリーム反復子に関連付けられたバッファリングや文字変換をバイパスすることができます。
コンストラクター
コンストラクター | 説明 |
---|---|
ostreambuf_iterator | 出力ストリームに文字を書き込むために初期化された ostreambuf_iterator を構築します。 |
Typedefs
型名 | 説明 |
---|---|
char_type | ostreambuf_iterator の文字型を提供する型。 |
ostream_type | ostream_iterator のストリーム型を提供する型。 |
streambuf_type | ostreambuf_iterator のストリーム型を提供する型。 |
traits_type | ostream_iterator の文字特性型を提供する型。 |
メンバー関数
メンバー関数 | 説明 |
---|---|
failed | 出力ストリーム バッファーへの挿入の失敗をテストします。 |
演算子
演算子 | 説明 |
---|---|
operator* | 出力反復子式 * i = x を実装するために使用される逆参照演算子。 |
operator++ | 操作が呼び出される前に示したものと同じオブジェクトに ostreambuf_iterator を返す、実質的な機能を持たないインクリメント演算子。 |
operator= | この演算子は、関連付けられているストリーム バッファーに文字を挿入します。 |
要件
ヘッダー: <iterator>
名前空間: std
ostreambuf_iterator::char_type
ostreambuf_iterator
の文字型を提供する型。
typedef CharType char_type;
解説
この型は、テンプレート パラメーター CharType
のシノニムです。
例
// ostreambuf_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef ostreambuf_iterator<char>::char_type CHT1;
typedef ostreambuf_iterator<char>::traits_type CHTR1;
// ostreambuf_iterator for stream cout
// with new line delimiter:
ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output streambuf:
cout << "The characters written to the output stream\n"
<< " by charOutBuf are: ";
*charOutBuf = 'O';
charOutBuf++;
*charOutBuf = 'U';
charOutBuf++;
*charOutBuf = 'T';
charOutBuf++;
cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/
ostreambuf_iterator::failed
出力ストリーム バッファーへの挿入の失敗をテストします。
bool failed() const throw();
戻り値
これまでに出力ストリーム バッファーへの挿入が失敗していない場合は、true
。そうでない場合は、false
。
解説
このメンバー関数は、これまでのメンバー operator=
の使用で、subf_->sputc
の呼び出しが eof を返した場合、true
を返します。
例
// ostreambuf_iterator_failed.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
ostreambuf_iterator<char> charOut ( cout );
*charOut = 'a';
charOut ++;
*charOut = 'b';
charOut ++;
*charOut = 'c';
cout << " are characters output individually." << endl;
bool b1 = charOut.failed ( );
if (b1)
cout << "At least one insertion failed." << endl;
else
cout << "No insertions failed." << endl;
}
/* Output:
abc are characters output individually.
No insertions failed.
*/
ostreambuf_iterator::operator*
出力反復子式 * i = x を実装するために使用される逆参照演算子。
ostreambuf_iterator<CharType, Traits>& operator*();
戻り値
ostreambuf 反復子オブジェクト。
解説
この演算子は、出力反復子式 * i = x 内でのみ機能して、ストリーム バッファーに文字を出力します。 ostreambuf 反復子に適用されて、反復子を返します。*iter は iter を返します。
例
// ostreambuf_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // no effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/
ostreambuf_iterator::operator++
操作が呼び出される前に示したものと同じ文字に ostream 反復子を返す、実質的な機能を持たないインクリメント演算子。
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
戻り値
最初に示された文字または、ostreambuf_iterator
<CharType, Traits> に変換できる実装定義のオブジェクトへの参照。
解説
この演算子は、出力反復子式 * i = x を実装するために使用されます。
例
// ostreambuf_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/
ostreambuf_iterator::operator=
この演算子は、関連付けられているストリーム バッファーに文字を挿入します。
ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);
パラメーター
_Char
ストリーム バッファーに挿入する文字。
戻り値
ストリーム バッファーに挿入された文字への参照。
解説
出力ストリームに書き込むための出力反復子式 * i = x を実装するために使用される代入演算子。
例
// ostreambuf_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/
ostreambuf_iterator::ostreambuf_iterator
出力ストリームに文字を書き込むために初期化された ostreambuf_iterator
を構築します。
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();
パラメーター
strbuf
出力ストリームバッファー ポインターを初期化するために使用される出力 streambuf オブジェクト。
Ostr
出力ストリームバッファー ポインターを初期化するために使用される出力ストリーム オブジェクト。
解説
最初のコンストラクターは、出力ストリームバッファー ポインターを strbuf で初期化します。
2 番目のコンストラクターは、出力ストリームバッファー ポインターを Ostr
. rdbuf
. 格納されたポインターは null ポインターでない必要があります。
例
// ostreambuf_iteratorOstreambuf_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
ostreambuf_iterator<char> charOut ( cout );
*charOut = 'O';
charOut ++;
*charOut = 'U';
charOut ++;
*charOut = 'T';
cout << " are characters output individually." << endl;
ostreambuf_iterator<char> strOut ( cout );
string str = "These characters are being written to the output stream.\n ";
copy ( str.begin ( ), str. end ( ), strOut );
}
/* Output:
OUT are characters output individually.
These characters are being written to the output stream.
*/
ostreambuf_iterator::ostream_type
ostream_iterator
のストリーム型を提供する型。
typedef basicOstream<CharType, Traits> ostream_type;
解説
この型は、basicOstream
<CharType, Traits> のシノニムです。
例
ostream_type
を宣言して使用する方法の例については、ostreambuf_iterator に関するセクションをご覧ください。
ostreambuf_iterator::streambuf_type
ostreambuf_iterator
のストリーム型を提供する型。
typedef basic_streambuf<CharType, Traits> streambuf_type;
解説
この型は、文字型 char
に特化したときに streambuf
になる I/O バッファーのストリーム クラスである、basic_streambuf
<CharType, Traits> の同意語です。
例
streambuf_type
を宣言して使用する方法の例については、ostreambuf_iterator に関するセクションをご覧ください。
ostreambuf_iterator::traits_type
ostream_iterator
の文字特性型を提供する型。
typedef Traits traits_type;
解説
この型は、テンプレート パラメーター Traits
のシノニムです。
例
// ostreambuf_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef ostreambuf_iterator<char>::char_type CHT1;
typedef ostreambuf_iterator<char>::traits_type CHTR1;
// ostreambuf_iterator for stream cout
// with new line delimiter:
ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output streambuf:
cout << "The characters written to the output stream\n"
<< " by charOutBuf are: ";
*charOutBuf = 'O';
charOutBuf++;
*charOutBuf = 'U';
charOutBuf++;
*charOutBuf = 'T';
charOutBuf++;
cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/