ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
std::coutは、C++で文字列や数値などのデータを標準出力(通常はコンソール画面)へ書き出すための出力ストリームオブジェクトです。<iostream>ヘッダで宣言され、挿入演算子<<と組み合わせて使うことで、さまざまな型のデータを画面に表示できます。
| この記事の要点 |
|---|
|
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;を記述するとcoutやendlのように書けます。ただし、名前の衝突を避けるため、規模の大きいコードや複数ファイルにまたがる場合は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::setwやstd::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::fixedやstd::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は書式文字列の中で表示形式を簡潔にまとめられる手軽さがあります。用途や好みに応じて使い分けられます。
よくある落とし穴
| 注意したいポイント |
|---|
|
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++での基本的な出力手段として広く使われています。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- printf 標準入出力関数
- printfで数値を表示する方法
- coutによるコンソール出力
- cinによる入力(パラメータ渡し)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?