C++ Academy · レッスン

iomanipによる出力の書式設定

iomanipヘッダーを使って、幅、精度、配置、基数を制御します。

レッスン 2/413 ステップ

「iomanipによる出力の書式設定」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

iomanip ヘッダー

<iomanip> ヘッダーはマニピュレーターを提供します。これは cout にストリーム出力して、書式設定の状態を変更する特殊なオブジェクトです。

std::setw: フィールド幅

std::setw(n) は、次のフィールドだけの最小幅を設定します。値が短い場合は埋められます。

#include <iomanip>
std::cout << std::setw(10) << "Name" << std::setw(5) << "Age\n";
std::cout << std::setw(10) << "Ada"  << std::setw(5) << 36 << "\n";

std::setfill: 埋め文字

デフォルトでは、setw はスペースで埋めます。setfill で埋め文字を変更できます。この設定は変更するまで維持されます。

std::cout << std::setfill('0') << std::setw(4) << 42;
// 0042

std::left と std::right

setw で指定したフィールド内のテキストを揃えます。デフォルトは右揃えです。

std::cout << std::left << std::setw(10) << "Ada" << "|\n";
std::cout << std::right << std::setw(10) << "Ada" << "|\n";

std::setprecision

有効桁数を制御します。std::fixed と組み合わせると、小数点以下の桁数を制御できます。

double pi = 3.14159265;
std::cout << std::setprecision(4) << pi << "\n";  // 3.142
std::cout << std::fixed << std::setprecision(2) << pi; // 3.14

Fixed Scientific Hexfloat

std::fixed、std::scientific、std::hexfloat を使って、数値の書式を切り替えます。

double x = 12345.6789;
std::cout << std::scientific << x << "\n"; // 1.234568e+04
std::cout << std::fixed << x << "\n";      // 12345.678900

整数の基数: hex oct dec

異なる基数で整数を出力します。std::showbase を使うと接頭辞(0x、0)が追加されます。

int n = 255;
std::cout << std::hex << n << "\n";  // ff
std::cout << std::oct << n << "\n";  // 377
std::cout << std::dec << n << "\n";  // 255 (default)

std::boolalpha

真偽値を 1/0 ではなく単語として出力します。

std::cout << std::boolalpha << true << "\n";  // true
std::cout << std::noboolalpha << true << "\n"; // 1

マニピュレーターの設定は維持される

ほとんどのマニピュレーターは、変更されるまで効果が維持されます。setw は例外で、次のフィールドにだけ適用されます。

安全な文字列のための std::quoted

<iomanip> にある std::quoted は、文字列を二重引用符で囲み、内部に含まれる引用符をエスケープします。ログ行に最適です。

std::string name = "Ada \"Countess\"";
std::cout << std::quoted(name);
// "Ada \"Countess\""

C++20 std::format

現代的な C++20 では、ほとんどの iomanip の用途を、型安全な printf 形式の API である std::format に置き換えられます。

#include <format>
std::cout << std::format("{:>10} | {:.2f}\n", "pi", 3.14159);

確認問題

出力するフィールドごとに再適用する必要があるマニピュレーターはどれですか。

まとめ

<iomanip> には、幅、精度、配置、基数、引用符を扱うマニピュレーターがあります。setw はフィールドごとに適用され、それ以外は設定が維持されます。C++20 では、より明確な書式設定のために std::format を優先してください。

無料で開始

AI チューターと学ぶ C++ — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
51
レッスン
203

よくある質問

「iomanipによる出力の書式設定」レッスンは無料ですか?

はい。「iomanipによる出力の書式設定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「iomanipによる出力の書式設定」で何を学びますか?

iomanipヘッダーを使って、幅、精度、配置、基数を制御します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「iomanipによる出力の書式設定」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. std::cinとstd::coutの適切な使い方
  2. iomanipによる出力の書式設定
  3. getlineで安全に入力を読み取る
  4. std::cerrとstd::clogを扱う
← C++ Academyに戻る