std::setw
From cppreference.com
| ヘッダ <iomanip>で定義 |
||
| /* 未指定 */ setw( int n ); |
||
式 out << std::setw(n) または in >> std::setw(n) で使用されると、ストリーム out または in の `width` パラメータを正確に n に設定します。
一部の操作では、幅がゼロにリセットされるため(下記参照)、複数の操作で幅を設定するために `std::setw` を繰り返し呼び出す必要がある場合があります。
目次 |
[編集] パラメータ
| n | - | 幅の新しい値 |
[編集] 戻り値
未指定の型のオブジェクト。その結果、
- out が型 std::basic_ostream<CharT, Traits> のオブジェクトである場合、式 out << setw(n) は
- は std::basic_ostream<CharT, Traits>& 型を持ち、
outの値を持ち、- f(out, n) を呼び出したかのように動作します。
- in が型 std::basic_istream<CharT, Traits> のオブジェクトである場合、式 in >> setw(n) は
- std::basic_istream<CharT, Traits>& 型
- in の値
- f(in, n) を呼び出したかのように動作します。
ここで関数 f は次のように定義されます。
void f(std::ios_base& str, int n) { // set width str.width(n); }
[編集] 注記
ストリームの幅プロパティは、以下のいずれかの関数が呼び出された場合にゼロ(「未指定」を意味する)にリセットされます。
- 入力
- 出力
- 算術型または void ポインタを受け取る basic_ostream::operator<<() のオーバーロード(num_put::put() のステージ 3)
- operator<<(basic_ostream&, char) および operator<<(basic_ostream&, char*)
- operator<<(basic_ostream&, basic_string&)
- std::put_money(money_put::put() 内)
- std::quoted(出力ストリームで使用する場合)
この修飾子が入力および出力に与える正確な影響は、個々の I/O 関数によって異なり、各 operator<< および operator>> オーバーロードページで個別に説明されています。
[編集] 例
このコードを実行
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "no setw: [" << 42 << "]\n" << "setw(6): [" << std::setw(6) << 42 << "]\n" << "no setw, several elements: [" << 89 << 12 << 34 << "]\n" << "setw(6), several elements: [" << 89 << std::setw(6) << 12 << 34 << "]\n"; std::istringstream is("hello, world"); char arr[10]; is >> std::setw(6) >> arr; std::cout << "Input from \"" << is.str() << "\" with setw(6) gave \"" << arr << "\"\n"; }
出力
no setw: [42] setw(6): [ 42] no setw, several elements: [891234] setw(6), several elements: [89 1234] Input from "hello, world" with setw(6) gave "hello"
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 183 | C++98 | setw は、以下のいずれかの型のストリームでのみ使用できました。型 std::ostream または std::istream |
(誤字のため、17番の「任意の文字ストリームで使用可能」は18番として扱われるべきですが、提供されたHTML構造に従います。) (19番は提供されたHTML構造には対応する要素がありません。) |
[編集] 関連項目
| フィールド幅を管理する ( std::ios_base の public メンバ関数) | |
| 埋め文字を変更する (関数テンプレート) | |
| 埋め文字の配置を設定する (関数) | |
| 数値の基数を示す接頭辞を使用するかどうかを制御する (関数) |