C++入出力フラグ
C++では標準入出力に使用するいくつかのフォーマットフラグを定義している。
これらはflags(),
setf(),
unsetf()関数で操作することができる。
例えば:
cout.setf(ios::left);
このサンプルのようにすれば、すべてのcoutの出力を左寄せにすることができる。
| フラグ | 意味 |
| boolalpha | "true", "false"という文字を使用してブール型のデータの入出力をできるようにする |
| dec | 数値型のデータが10進数で表示されるようになる |
| fixed | 浮動小数点数を固定小数点による標準記法(科学記法の逆)で表示する |
| hex | 数値データを16進数で表示する |
| internal | もしフィールドを数値で埋める場合に、ベース文字と符号の間にスペースを入れる |
| left | 出力を左寄せにする |
| oct | 数値出力を8進法にする |
| right | 出力を右寄せにする |
| scientific | 浮動小数点数を科学記法で表示する |
| showbase | 数値を表示するベースを設定する |
| showpoint | 必要がない場合でも10進数でゼロを表示する |
| showpos | 正の数値の前に+の符号を表示する |
| skipws | ストリームからの読み込みの際にホワイトスペース文字(スペース、タブ、改行)を読み飛ばす |
| unitbuf | 出力ごとに毎回バッファをフラッシュする |
| uppercase | 科学記法の"e"や16進数表記の"x"を大文字で出力する |
フラグは以下のマニピュレータを使用して間接的に操作することができる。
多くのプログラマはendlマニピュレータは使用したことがあるだろう。
マニピュレータの使用法はendlと同じである。
例えば、decフラグをセットする場合には以下のコマンドを使用する:
cout << dec;
| <iostream>で定義されているマニピュレータ |
| マニピュレータ | 説明 | 入力 | 出力 |
| boolalpha | boolalphaフラグをONにする | O | O |
| dec | decフラグをONにする | O | O |
| endl | 改行文字を出力し、ストリームをフラッシュする | | O |
| ends | null文字を出力する | | O |
| fixed | fixedフラグをONにする | | O |
| flush | ストリームをフラッシュする | | X |
| hex | hexフラグをONにする | O | O |
| internal | internalフラグをONにする | | O |
| left | leftフラグをONにする | | O |
| noboolalpha | boolalphaフラグをOFFにする | O | O |
| noshowbase | showbaseフラグをOFFにする | | O |
| noshowpoint | showpointフラグをOFFにする | | O |
| noshowpos | showposフラグをOFFにする | | O |
| noskipws | skipwsフラグをにする | O | |
| nounitbuf | unitbufフラグをOFFにする | | O |
| nouppercase | uppercaseフラグをOFFにする | | O |
| oct | octフラグをONにする | O | O |
| right | rightフラグをにする | | O |
| scientific | scientificフラグをONにする | | O |
| showbase | showbaseフラグをONにする | | O |
| showpoint | showpointフラグをONにする | | O |
| showpos | showposフラグをONにする | | O |
| skipws | skipwsフラグをONにする | O | |
| unitbuf | unitbufフラグをONにする | | O |
| uppercase | uppercaseフラグをONにする | | O |
| ws | ホワイトスペースを読み飛ばす | O | |
| <iomanip>で定義されているマニピュレータ |
| マニピュレータ | 説明 | 入力 | 出力 |
| resetiosflags( long フラグ ) | フラグで指定されたフラグをオフにする | O | O |
| setbase( int ベース ) | 数値のベースをbaseに指定する | | O |
| setfill( int 文字 ) | 詰め物文字を文字に設定する | | O |
| setiosflags( long フラグ ) | フラグで指定されたフラグをオンにする | O | O |
| setprecision( int p ) | 数値型の精度を設定する | | O |
| setw( int 幅 ) | フィールドの幅を幅に設定する | | O |