另一個的引數的輸出資料流 Manipulators
下列範例會使用類別money,也就是long型別。 setpic Manipulator 會將格式設定的 「 圖片 」 字串附加至可由類別的多載資料流插入運算子的類別money。 顯示格式字串會儲存為靜態變數中money類別而不是以資料流類別資料成員,所以您不必衍生一個新的輸出資料流類別。
範例
// one_arg_output.cpp
// compile with: /GR /EHsc
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
typedef char* charp;
class money
{
private:
long value;
static char *szCurrentPic;
public:
money( long val ) { value = val; }
friend ostream& operator << ( ostream& os, money m ) {
// A more complete function would merge the picture
// with the value rather than simply appending it
os << m.value << '[' << money::szCurrentPic << ']';
return os;
}
static void setpic( char* szPic ) {
money::szCurrentPic = new char[strlen( szPic ) + 1];
strcpy_s( money::szCurrentPic, strlen( szPic ) + 1, szPic );
}
};
char *money::szCurrentPic; // Static pointer to picture
void fb( ios_base& os, char * somename )
{
money::setpic(somename);
/*
ostream *pos = dynamic_cast<ostream*>(&os);
if (pos)
{
for( int i=0; i < l; i++ )
(*pos) << ' ';
};
*/
}
_Smanip<charp>
__cdecl setpic(char * somename)
{
return (_Smanip<charp>(&fb, somename));
}
int main( )
{
money amt = (long)35235.22;
cout << setiosflags( ios::fixed );
cout << setpic( "###,###,###.##" ) << "amount = " << amt << endl;
}