前章では、coutが、ostreamクラスのオブジェクトであると書きました。 じゃ、メンバ関数なんかも定義されてるのかな?はい、定義されています。 ヘルプを見ればわかります。VC++1.51を例にとってヘルプを見てみましょう。 他のコンパイラでも似たようなものだと思います。
まず、メニューバーのHelpをクリックします。そして、C/C++languageを 選択します。「その他のトピック」に「iostreamリファレンス」と いうのがありますから、これをクリックして下さい。 あー、いっぱいクラスが出てきたでしょう。iostreamの中では、これだけのクラスが 定義されています。では、ostreamクラスをクリックしてみましょう。 難しげな説明がいろいろ書いてあります。全部無視して「メンバ」というボタンを クリックして下さい。
「フラグ、書式アクセス関数」という項目に 「setf」というのがありますね。これを使います。
このメンバ関数は、引数1個のものと2個のものがオーバーロード されていることに注意して下さい。関数のオーバーロードについては もう、バッチリわかっていますね。わからない人は、 第4章を復習して下さい。 まずは、例を見て下さい。long setf( long lFlags ); long setf( long lFlags, long lMask );
hexだの、octだのはiosクラスで定義されているので
必ずios::を付けて下さい。そして、cout.setf(ios::hex);
のように使います。これでこれ以後はcout << x;
でxが、16進で表示されます。ios::octなら8進表示です。
ここで、注意しなくてはいけないのは、cout.setfを実行したなら
必ずcout.unsetfを実行して下さい。そうしないと、
次のcout.setfがうまく働きません。
実行結果は左のようになります。
でもなんだか面倒くさいですね。
そこで、引数を2つもつsetfを使います。
第2引数にios::basefieldを付けてやります。
ios::basefieldを付けると、unsetfしなくても大丈夫です。
結果は、左の通りです。書式制御については
まだまだ、たくさんありますが今回はこのへんで
やめておきましょう。
Update Feb/04/1997 By Y.Kumei