Compartilhar via


Manipuladores de fluxo de saída com um argumento (int ou long)

A biblioteca de classes iostream fornece um conjunto de macros para criar manipuladores com parâmetros. Manipuladores com um único argumento int ou long são um caso especial. Para criar um manipulador de fluxo de saída que aceita apenas um argumento int ou long (como setw), você precisa usar a macro _Smanip, que é definida em <iomanip>. Este exemplo define um manipulador fillblank que insere um número especificado de espaços em branco no fluxo:

Exemplo

// output_stream_manip.cpp
// compile with: /GR /EHsc
#include <iostream>
#include <iomanip>
using namespace std;

void fb( ios_base& os, int l )
{
   ostream *pos = dynamic_cast<ostream*>(&os);
   if (pos)
   {
      for( int i=0; i < l; i++ )
      (*pos) << ' ';
   };
}

_Smanip<int>
   __cdecl fillblank(int no)
   {
   return (_Smanip<int>(&fb, no));
   }

int main( )
{
   cout << "10 blanks follow" << fillblank( 10 ) << ".\n";
}

Confira também

Manipuladores personalizados com argumentos