共用方式為


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
*/

另請參閱

<iterator>
C++ 標準程式庫中的執行緒安全
C++ 標準程式庫參考