C++ で標準出力を表すのが std::cout である。
通常の実行結果やユーザー向けメッセージは、まず std::cout へ出力する。
std::cout は単なる出力先ではなく、書式設定の状態を保持する std::ostream オブジェクトでもある。
基本
#include <iostream>
int main()
{
int value { 42 };
std::cout << "value = " << value << '\n';
}値の出力には挿入演算子 << を使う。
演算子は std::ostream& を返すため、std::cout << a << b; のように連結できる。
書式設定は状態として残る
std::cout に適用した書式設定の多くは、そのストリームの状態として保持される。
そのため、std::hex や std::boolalpha を一度設定すると、明示的に戻すまで後続の出力にも影響する。
std::cout << std::boolalpha << true << '\n';
std::cout << false << '\n'; // ここでも false と出る
std::cout << std::hex << 27 << '\n';
std::cout << 28 << '\n'; // ここでも 16 進数のまま詳しい調整方法はマニピュレータ(C++)を参照。
バッファリング
std::cout は多くの環境でバッファを使って出力する。
そのため、書き込んだ内容はすぐには画面へ現れず、まとまって送られることがある。
'\n' と std::endl
'\n'改行文字だけを出力するstd::endl改行に加えてフラッシュも行う
改行だけで十分なら '\n' の方が軽いことが多い。
即時反映したいときだけ std::endl や std::flush を使う。
書式設定
出力書式はマニピュレータ(C++)で調整できる。 複数の設定を重ねることもできる。
#include <iomanip>
#include <iostream>
int main()
{
std::cout << std::boolalpha << true << '\n';
std::cout << std::hex << 27 << '\n';
std::cout << std::dec << std::fixed << std::setprecision(2) << 3.14159 << '\n';
std::cout << std::setw(8) << std::setfill('.') << 42 << '\n';
}std::setprecision
std::setprecision(n) の意味は、出力モードによって少し変わる。
- 通常時 有効桁数を指定する
std::fixedやstd::scientificと併用したとき 小数部の桁数を指定する
std::cout << std::setprecision(3) << 123.456 << '\n'; // 有効桁数
std::cout << std::fixed << std::setprecision(3) << 123.456 << '\n'; // 小数部 3 桁