標準入出力

スポンサーリンク

標準入出力

次のプログラムは,2 整数の入力を受け付け,その和を出力するプログラムです。

#include <iostream>

int main()
{
    int a, b;

    std::cin >> a >> b;

    std::cout << "a + b = " << a + b << std::endl;
}
<b>[実行例]</b>
2 3
a + b = 5

std::cin (console in), std::cout (console out) は,それぞれ標準入力,標準出力に対応するオブジェクトです。
他に,標準エラー出力に対応する std::cerr, std::clog もあります。

ストリーム説明
cin標準入力
cout標準出力
cerr標準エラー出力 (バッファリングしない)
clog標準エラー出力 (バッファリングする)

std::cin には >> 演算子を用います。
整数変数 a, b に対して std::cin >> a >> b と書けば,ホワイトスペースで区切られた 2 整数がそれぞれ a, b に格納されます。

std::cout, std::cerr, std::clog には << 演算子を用います。

1 行単位で入力を読み込むには,std::getline 関数を使います。

#include <iostream>

int main()
{
    std::string buf;
    std::getline(std::cin, buf);
}

マニピュレータ

std::endl のようなマニピュレータ (manipulator, 操作子) を利用すると,入出力の書式や挙動が制御できます。
マニピュレータを利用するには,ヘッダ iomanip をインクルードします。

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int n = 123;

    cout << setw(8) << n << endl;
    cout << setw(8) << setfill('0') << n << endl;

    cout << oct << n << endl;
    cout << dec << n << endl;
    cout << hex << n << endl;
}
<b>[出力]</b>
     123
00000123
173
123
7b

マニピュレータには次のようなものがあります。

マニピュレータ説明方向
oct8 進数で入出力I/O
dec10 進数で入出力I/O
hex16 進数で入出力I/O
setbase(n)n 進数で入出力I/O
setprecision(n)小数部を n 桁で出力O
setw(n)幅 n で出力O
setfill(c)余白を文字 c で埋めるO
endl改行文字を出力してバッファをフラッシュO
flushバッファをフラッシュO
スポンサーリンク