ostream_iterator 類別
類別範本ostream_iterator描述輸出反覆運算器物件,該物件會使用 擷取 operator <<
將後續專案寫入輸出數據流。
語法
template <class Type class CharType = char class Traits = char_traits <CharType>>
class ostream_iterator
參數
類型
要插入至輸出資料流的物件類型。
CharType
類型,表示 ostream_iterator
的字元類型。 這個引數是選擇性的,而且預設值是 char
。
特性
類型,表示 ostream_iterator
的字元類型。 這個自變數是選擇性的,預設值為 char_traits
<CharType。>
ostream_iterator 類別必須符合輸出迭代器的需求。 使用 ostream_iterator
,演算法可以直接寫入輸出資料流。
建構函式
建構函式 | 描述 |
---|---|
ostream_iterator | 建構初始化和分隔以寫入輸出資料流的 ostream_iterator 。 |
Typedefs
類型名稱 | 描述 |
---|---|
char_type | 類型,提供 ostream_iterator 的字元類型。 |
ostream_type | 類型,提供 ostream_iterator 的資料流類型。 |
traits_type | 類型,提供 ostream_iterator 的字元特性類型。 |
操作員
運算子 | 描述 |
---|---|
operator* | 取值運算子,用來實作輸出迭代器運算式 * i = x 。 |
operator++ | 無作用的遞增運算子,傳回 ostream_iterator ,指向在呼叫作業之前它所定址的相同物件。 |
operator= | 指派運算子,用來實作輸出迭代器運算式 * i = x ,以寫入輸出資料流。 |
需求
Header:<iterator>
命名空間:std
ostream_iterator::char_type
類型,提供迭代器的字元類型。
typedef CharType char_type;
備註
此類型是範本參數 CharType
的同義字。
範例
// ostream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef ostream_iterator<int>::char_type CHT1;
typedef ostream_iterator<int>::traits_type CHTR1;
// ostream_iterator for stream cout
// with new line delimiter:
ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );
// Standard iterator interface for writing
// elements to the output stream:
cout << "The integers written to the output stream\n"
<< "by intOut are:" << endl;
*intOut = 10;
*intOut = 20;
*intOut = 30;
}
/* Output:
The integers written to the output stream
by intOut are:
10
20
30
*/
ostream_iterator::operator*
用來實作輸出反覆運算器表示式 * ii = x 的取值運算元。
ostream_iterator<Type, CharType, Traits>& operator*();
傳回值
ostream_iterator
的參考。
備註
輸出反覆運算器的需求,必須ostream_iterator
滿足,只需要表達式 * ii = 無效,且不會自行對 或 operator=
說出任何內容。operator
這個實作中的成員運算子會傳 *this
回 。
範例
// ostream_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostream_iterator for stream cout
// with new line delimiter
ostream_iterator<int> intOut ( cout , "\n" );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*intOut = 10;
intOut++; // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/
ostream_iterator::operator++
無作用的遞增運算子,傳回 ostream_iterator
,指向在呼叫作業之前它所定址的相同物件。
ostream_iterator<Type, CharType, Traits>& operator++();
ostream_iterator<Type, CharType, Traits> operator++(int);
傳回值
ostream_iterator
的參考。
備註
這些成員運算子都會傳回 *this
。
範例
// ostream_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostream_iterator for stream cout
// with new line delimiter
ostream_iterator<int> intOut ( cout , "\n" );
// standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*intOut = 10;
intOut++; // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/
ostream_iterator::operator=
指派運算子,用來實作 output_iterator 運算式 * i
= x
,以寫入輸出資料流。
ostream_iterator<Type, CharType, Traits>& operator=(const Type& val);
參數
val
要插入至輸出資料流的 Type
類型物件值。
傳回值
運算符會將 val 插入與 對象相關聯的輸出數據流,後面接著ostream_iterator建構函式中指定的分隔符(如果有的話),然後傳回 的ostream_iterator
參考。
備註
針對輸出迭代器的需求,ostream_iterator
必須滿足僅要求運算式 * ii
= t
有效,且本身不涉及運算子或 operator=。 此成員運算子會傳回 *this
。
範例
// ostream_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostream_iterator for stream cout
// with new line delimiter
ostream_iterator<int> intOut ( cout , "\n" );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*intOut = 10;
intOut++; // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/
ostream_iterator::ostream_iterator
建構初始化和分隔以寫入輸出資料流的 ostream_iterator
。
ostream_iterator(
ostream_type& _Ostr);
ostream_iterator(
ostream_type& _Ostr,
const CharType* _Delimiter);
參數
_Ostr
要逐一查看之類型 ostream_iterator::ostream_type 的輸出資料流。
_定界符
要插入至輸出資料流值之間的分隔符號。
備註
第一個建構函式會使用 &_Ostr
初始化輸出資料流指標。 分隔符號字串指標指定為空字串。
第二個建構函式會使用 &_Ostr
和具有 _Delimiter 的分隔符字串指標,初始化輸出數據流指標。
範例
// ostream_iterator_ostream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostream_iterator for stream cout
ostream_iterator<int> intOut ( cout , "\n" );
*intOut = 10;
intOut++;
*intOut = 20;
intOut++;
int i;
vector<int> vec;
for ( i = 1 ; i < 7 ; ++i )
{
vec.push_back ( i );
}
// Write elements to standard output stream
cout << "Elements output without delimiter: ";
copy ( vec.begin ( ), vec.end ( ),
ostream_iterator<int> ( cout ) );
cout << endl;
// Write elements with delimiter " : " to output stream
cout << "Elements output with delimiter: ";
copy ( vec.begin ( ), vec.end ( ),
ostream_iterator<int> ( cout, " : " ) );
cout << endl;
}
/* Output:
10
20
Elements output without delimiter: 123456
Elements output with delimiter: 1 : 2 : 3 : 4 : 5 : 6 :
*/
ostream_iterator::ostream_type
類型,提供迭代器的資料流類型。
typedef basic_ostream<CharType, Traits> ostream_type;
備註
此類型與iostream階層的串流類別basic_ostreamTraits
<>CharType
同義,其定義可用於寫入的物件。
範例
如需如何宣告及使用 ostream_type
的範例,請參閱 ostream_iterator。
ostream_iterator::traits_type
類型,提供迭代器的字元特性類型。
typedef Traits traits_type;
備註
此類型是範本參數 Traits
的同義字。
範例
// ostream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// The following not OK, but are just the default values:
typedef ostream_iterator<int>::char_type CHT1;
typedef ostream_iterator<int>::traits_type CHTR1;
// ostream_iterator for stream cout
// with new line delimiter:
ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );
// Standard iterator interface for writing
// elements to the output stream:
cout << "The integers written to output stream\n"
<< "by intOut are:" << endl;
*intOut = 1;
*intOut = 10;
*intOut = 100;
}
/* Output:
The integers written to output stream
by intOut are:
1
10
100
*/