std::ios_base::setf
From cppreference.com
| fmtflags setf( fmtflags flags ); |
(1) | |
| fmtflags setf( fmtflags flags, fmtflags mask ); |
(2) | |
指定された設定にフォーマットフラグを設定します。
1) flags で識別されるフォーマットフラグを設定します。事実上、以下の操作が実行されます: fl = fl | flags。ここで
fl は内部フォーマットフラグの状態を定義します。2) mask の下のフォーマットフラグをクリアし、クリアされたフラグを指定された flags に設定します。事実上、以下の操作が実行されます: fl = (fl & ~mask) | (flags & mask)。ここで
fl は内部フォーマットフラグの状態を定義します。目次 |
[編集] パラメータ
| flags, mask | - | 新しいフォーマット設定。mask はどのフラグを変更できるかを定義し、flags は変更されるフラグのうちどれを設定すべきかを定義します(他はクリアされます)。両方のパラメータは、フォーマットフラグ定数の組み合わせにすることができます。 |
[編集] フォーマットフラグ
| Constant | 説明 |
| 10進 | 整数I/Oには10進数を指定します。詳細はstd::decを参照してください。 |
| 8進 | 整数I/Oには8進数を指定します。詳細はstd::octを参照してください。 |
| 16進 | 整数I/Oには16進数を指定します。詳細はstd::hexを参照してください。 |
| basefield | dec | oct | hex。マスキング操作に便利です。 |
| left | 左寄せ(右側に埋め文字を追加します):詳細はstd::leftを参照してください。 |
| right | 右寄せ(左側に埋め文字を追加します):詳細はstd::rightを参照してください。 |
| internal | 内部調整(内部指定された位置に埋め文字を追加します):詳細はstd::internalを参照してください。 |
| adjustfield | left | right | internal。マスキング操作に便利です。 |
| scientific | 浮動小数点型を科学的表記法で生成します。 fixed と組み合わせる場合は16進数表記法になります:詳細はstd::scientificを参照してください。 |
| fixed | 浮動小数点型を固定表記法で生成します。 scientific と組み合わせる場合は16進数表記法になります:詳細はstd::fixedを参照してください。 |
| floatfield | scientific | fixed。マスキング操作に便利です。 |
| boolalpha | bool 型を英数字形式で挿入および抽出します:詳細はstd::boolalphaを参照してください。 |
| showbase | 整数出力用の数値基数を示すプレフィックスを生成します。通貨I/Oでは通貨記号が必要です:詳細はstd::showbaseを参照してください。 |
| showpoint | 浮動小数点数出力で小数点文字を無条件に生成します:詳細はstd::showpointを参照してください。 |
| showpos | 非負の数値出力に + 文字を生成します:詳細はstd::showposを参照してください。 |
| skipws | 特定の入力操作の前に先頭の空白をスキップします:詳細はstd::skipwsを参照してください。 |
| unitbuf | 各出力操作の後にバッファをフラッシュします:詳細はstd::unitbufを参照してください。 |
| uppercase | 特定の出力操作で、一部の小文字を対応する大文字に置き換えます:詳細はstd::uppercaseを参照してください。 |
[編集] 戻り値
関数呼び出し前のフォーマットフラグ。
[編集] 例
このコードを実行
#include <iomanip> #include <iostream> #include <numbers> int main() { const double PI = std::numbers::pi; const int WIDTH = 15; std::cout.setf(std::ios::right); // equivalent: cout << right; std::cout << std::setw(WIDTH / 2) << "radius" << std::setw(WIDTH) << "circumference" << '\n'; std::cout.setf(std::ios::fixed); // equivalent: cout << fixed; for (double radius = 1; radius <= 6; radius += 0.5) std::cout << std::setprecision(1) << std::setw(WIDTH / 2) << radius << std::setprecision(2) << std::setw(WIDTH) << (2 * PI * radius) << '\n'; }
出力
radius circumference
1.0 6.28
1.5 9.42
2.0 12.57
2.5 15.71
3.0 18.85
3.5 21.99
4.0 25.13
4.5 28.27
5.0 31.42
5.5 34.56
6.0 37.70[編集] 関連項目
| 書式フラグを管理する (public メンバ関数) | |
| 特定の書式フラグをクリアする (public メンバ関数) |