マニピュレータ
C++の入出力で書式を設定するには、マニピュレータを使用する。iosクラスで定義してあるフラグを使って、書式を設定する事もできるが、面倒くさい。(タイピング量が多い!?)
入出力マニピュレータは特別な関数で、入出力文の内部で使用できる特別な関数。
引数を受け取る関数を呼び出す際は、iomanipをインクルードする必要がある
引数の不要な関数は、()をつけずに記述する。(ポインタを受け取る為)
マニピュレータ |
使用目的 |
概要 |
入出力 |
boolalpha |
boolalphaフラグをON |
bool値の入出力にtrue、falseが使用できる |
入出力 |
dec |
decフラグをON |
10進数にする |
入出力 |
endl |
改行文字を出力し、ストリームをフラッシュする |
|
出力 |
ends |
ヌルを出力 |
|
出力 |
fixed |
fixedフラグをON |
浮動小数点値が通常表記 |
出力 |
flush |
ストリームをクリア |
|
出力 |
hex |
hexフラグをON |
16進数出力 |
入出力 |
interlnal |
internalフラグをON |
フィールドがいっぱいになるまで数値の追加が行われる |
出力 |
left |
leftフラグをON |
出力を左寄せにする |
出力 |
noboolalpha |
boolalphaフラグOFF |
|
入出力 |
noshowbase |
showbaseフラグOFF |
|
出力 |
noshowpoint |
showpointフラグOFF |
|
出力 |
noshowpos |
showposフラグOFF |
|
出力 |
noskipws |
skipwsフラグOFF |
|
入力 |
nounitbuf |
unitbufフラグOFF |
|
出力 |
nouppercase |
uppercaseフラグOFF |
|
出力 |
oct |
octフラグON |
8進数表示 |
出力 |
noresetiosflags(fmtflags f) |
fに指定しているフラグをOFF |
|
入出力 |
right |
rightフラグON |
右寄せにする |
出力 |
scientific |
scientificフラグON |
浮動小数点値を科学技術表記する |
出力 |
setbase(int base) |
基数をbaseにする |
|
入出力 |
setfill(int ch) |
充てん文字をchに設定 |
|
出力 |
setiosflags(int p) |
fで指定したフラグをON |
|
入出力 |
setprecision(int p) |
精度の桁数を指定 |
|
出力 |
setw(int w) |
フィールド幅をwに指定 |
|
出力 |
showbase |
showbaseフラグON |
数値の基数をつける |
出力 |
showpoint |
showpointフラグON |
全ての浮動小数点出力に小数点と後続0が付加 |
出力 |
showpos |
shoposフラグON |
正値の前に+をつける(dec) |
出力 |
skipws |
skipwsフラグON |
ストリーム入力時の先頭WSを破棄 |
入力 |
unitbuf |
unitbufフラグON |
挿入操作の度にバッファをクリア |
出力 |
uppercase |
uppercaseフラグON |
基数の文字xを大文字にする |
出力 |
ws |
先行WSをスキップ |
|
入力 |
マニピュレータの例
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char** argv)
{
cout << oct << 8 << endl; //8進数で出力
cout << 8 << endl; //1回変更すると、それを引き継ぐ
cout << dec << 8 << endl; //10進数にする
cout << showpos << 8 << endl; //+をつける
cout << hex << 13 << endl; //16進数にする
cout << showbase << 13 << endl; //基数をつける
return(0);
}
|