この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-06-12 15:49:49

タイトル: coutによるコンソール出力
SEOタイトル: C++のcoutの使い方|コンソール出力と挿入演算子・書式指定

std::coutは、C++で文字列や数値などのデータを標準出力(通常はコンソール画面)へ書き出すための出力ストリームオブジェクトです。<iostream>ヘッダで宣言され、挿入演算子<<と組み合わせて使うことで、さまざまな型のデータを画面に表示できます。

この記事の要点
  • std::cout<iostream>が提供する標準出力ストリームで、コンソールへの出力に使う。
  • 挿入演算子<<でデータを流し込み、<<を連結すれば複数の値を一度に出力できる。
  • 改行はstd::endlまたは'\n'で行う。std::endlはバッファのflush(書き出し)を伴う点が異なる。
  • 数値や変数はそのまま渡せ、型に応じて自動で文字列化される(型安全)。
  • 桁数や小数点以下の精度などの書式は<iomanip>のマニピュレータで指定する。

 

std::coutとは

std::cout(「シーアウト」と読まれることが多い)は、C++標準ライブラリが提供する標準出力ストリームを表すオブジェクトです。名前は「character output」に由来するとされます。プログラムから画面(標準出力)へ文字を送り出す窓口の役割を持ち、std::ostream型のオブジェクトとして<iostream>ヘッダ内で定義されています。

名前空間stdに属するため、正式にはstd::coutと書きます。利用するには<iostream>のインクルードが必要です。

基本的な使い方

もっとも基本的な例として、文字列「Hello」を表示して改行するコードを示します。

#include <iostream>

int main() {

    std::cout << "Hello" << std::endl;

    return 0;

}

このコードは次のように出力します。

Hello

 

std::cout << "Hello"の部分が「coutへ文字列Helloを送る」という意味になり、続く<< std::endlで改行を出力しています。なお、毎回std::と書くのを省きたい場合は、ファイルの先頭付近でusing namespace std;を記述するとcoutendlのように書けます。ただし、名前の衝突を避けるため、規模の大きいコードや複数ファイルにまたがる場合はstd::を明示する書き方が一般的に推奨されます。

挿入演算子<<の連結

<<挿入演算子(ストリーム挿入演算子)と呼ばれ、右側のデータを左側のストリームへ送り込みます。この演算子は連結して書けるため、複数の値を一度に出力できます。

#include <iostream>

int main() {

    int score = 80;

    std::cout << "点数は" << score << "点です" << std::endl;

    return 0;

}

出力は次のようになります。

点数は80点です

 

このように、文字列リテラル・整数変数・別の文字列を<<でつないで左から順に出力できます。値どうしの間には自動的な区切り文字は入らないため、空白を空けたい場合は" "のような文字列を明示的に挿入します。

改行:std::endlと'\n'の違い

改行を出力する方法には主にstd::endlと改行文字'\n'の2つがあります。どちらも画面上は同じく改行されますが、内部の動作が異なります。

  • std::endl:改行を出力したうえで、出力バッファのflush(書き出し)を行います。バッファに溜まっていた内容を即座に出力先へ反映させます。
  • '\n':改行文字を出力するだけで、flushは行いません。

多くの場面では結果に違いは現れませんが、ループ内などで大量に出力する場合、std::endlによる毎回のflushが処理速度を低下させる要因になることがあります。単に改行したいだけのときは'\n'を使うと無駄なflushを避けられます。

std::cout << "1行目\n";

std::cout << "2行目" << std::endl;

 

数値や変数の出力

std::coutは文字列だけでなく、整数・浮動小数点数・文字・真偽値など、さまざまな型をそのまま出力できます。型に応じた文字列化はライブラリ側が自動で行うため、変換指定子を書く必要はありません。

int n = 10;

double pi = 3.14;

char c = 'A';

std::cout << n << " " << pi << " " << c << "\n";

このコードは10 3.14 Aのように出力します。

書式の指定(<iomanip>)

桁数や小数点以下の精度、表示幅などを整えたい場合は、マニピュレータと呼ばれる機能を使います。一部は<iostream>だけで使えますが、std::setwstd::setprecisionなどは<iomanip>ヘッダのインクルードが必要です。

  • std::setw(n):次に出力する1項目の最小フィールド幅をn文字に設定します(次の1回のみ有効)。
  • std::setprecision(n):浮動小数点数の精度(有効桁数)をnに設定します。
  • std::fixed:浮動小数点数を固定小数点表記にします。std::setprecisionと併用すると、小数点以下の桁数を指定する意味合いになります。

#include <iostream>

#include <iomanip>

int main() {

    double value = 3.14159;

    std::cout << std::fixed << std::setprecision(2) << value << "\n";

    std::cout << std::setw(5) << 7 << "\n";

    return 0;

}

この例では、1行目が3.14(小数点以下2桁の固定表記)、2行目が幅5文字に右寄せされた7を出力します。std::fixedstd::setprecisionはストリームの状態として保持され、以降の出力にも影響する点に注意してください。一方、std::setwは直後の1項目だけに作用します。

入力との対応:std::cin

出力のstd::coutに対し、キーボードなどからの入力を受け取るにはstd::cinを使います。こちらは抽出演算子>>と組み合わせ、変数へ値を読み込みます。どちらも同じ<iostream>に含まれています。

int x;

std::cout << "数値を入力: ";

std::cin >> x;

std::cout << "入力値: " << x << "\n";

 

printfとの違い(比較表)

C言語由来のprintfでもコンソール出力は可能ですが、std::coutとはいくつかの点で異なります。代表的な違いを整理します。

項目 std::cout printf
必要なヘッダ <iostream> <cstdio>(C言語では<stdio.h>
書き方 挿入演算子<<で値を連結 書式文字列と変換指定子(%dなど)
型の扱い 型に応じて自動処理(型安全性が高い) 指定子と引数の型が一致しないと未定義動作になり得る
書式指定 マニピュレータ(<iomanip>)で行う 書式文字列内にまとめて記述できる

 

std::coutは出力する値の型をコンパイラが把握したうえで処理するため、型の不一致による誤りが起きにくい点が利点です。一方、printfは書式文字列の中で表示形式を簡潔にまとめられる手軽さがあります。用途や好みに応じて使い分けられます。

よくある落とし穴

注意したいポイント
  • endlの多用による速度低下std::endlは毎回flushを伴うため、大量の出力を行うループ内で多用すると処理が遅くなることがあります。単なる改行には'\n'が向いています。
  • 名前空間の指定漏れusing namespace std;を書かずにcoutとだけ書くとコンパイルエラーになります。std::coutと書くか、適切にusingを記述します。
  • bool値の表示bool型はそのままだとtrue1false0と数値で表示されます。true/falseの文字で表示したい場合はstd::boolalphaを使います。
  • マニピュレータの効果範囲std::setwは次の1項目のみ、std::setprecisionstd::fixedは以降の出力にも影響します。意図しない箇所まで書式が変わらないよう注意します。

 

FAQ

Q. std::coutとcoutはどちらが正しいですか?
A. 正式にはstd::coutです。coutとだけ書けるのは、using namespace std;using std::cout;によって名前空間stdを省略できるようにしている場合です。どちらも内部的には同じ標準出力ストリームを指します。

Q. 改行はstd::endl'\n'のどちらを使うべきですか?
A. 単に改行したいだけなら'\n'で十分で、無駄なflushを避けられます。出力をその時点で確実に画面へ反映させたい場合は、flushを伴うstd::endlが役立ちます。

Q. std::coutで日本語は出力できますか?
A. 文字列として日本語を渡せば出力自体は可能です。ただし、ソースファイルの文字コードや実行環境(コンソール)の文字コード設定が一致していないと文字化けすることがあります。環境に合わせた文字コードの設定が必要です。

まとめ

std::cout<iostream>が提供する標準出力ストリームで、挿入演算子<<を使ってコンソールへ文字列や数値を出力します。<<は連結でき、改行はstd::endlまたは'\n'で行います。書式を整えるには<iomanip>のマニピュレータを使います。型に応じて自動で文字列化される型安全性が特徴で、C++での基本的な出力手段として広く使われています。