Manipulateurs de flux de sortie à un argument (int ou long)
La bibliothèque de classes iostream fournit un ensemble de macros permettant de créer des manipulateurs paramétrables. Les manipulateurs à un argument int
ou long
sont un cas particulier. Pour créer un manipulateur de flux de sortie qui accepte un seul ou un argument int
(par setw
exemple), vous devez utiliser la macro _Smanip, qui est définie dans <iomanip>.long
Cet exemple définit un manipulateur fillblank
qui insère un nombre spécifié d’espaces vides dans le flux :
Exemple
// 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";
}