C++のcoutの使い方について詳しく解説

C++プログラミングにおいて、出力を行う際にはcoutがよく使われます。

しかし、初心者の方にとってはcoutの使い方が分かりづらいこともあるでしょう。

そこで本記事では、C++のcoutについて、サンプルコードを交えながら解説していきます。

目次

C++のcoutとは

C++のcoutは、標準出力ストリームを扱うためのオブジェクトです。coutを使用することで、プログラムの実行中に文字列や変数の値をコンソールに表示することができます。

例えば、以下のようなコードを書くことで、文字列や変数xの値をコンソールに表示することができます。

#include <iostream>

int main() {
    std::string str = "Hello, world!";
    int x = 10;
    
    std::cout << str << std::endl; // 文字列を出力
    std::cout << "x = " << x << std::endl; // 変数xの値を出力
    
    return 0;
}

上記のコードでは、std::coutオブジェクトに対して<<演算子を用いて、文字列や変数xの値を順次出力しています。また、改行するためにstd::endlも使用しています。

coutの基本的な使い方

C++において、標準出力を行うためにはcoutというオブジェクトを使用します。coutは、文字列や変数の値をコンソール上に出力することができます。

文字列の出力

まずは、文字列を出力する方法から見ていきましょう。以下のように、ダブルクォーテーションで囲んだ文字列を<<演算子でcoutオブジェクトに渡すことで、コンソール上に文字列を表示することができます。

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

上記のプログラムを実行すると、以下のような結果が得られます。

Hello, World!

変数の出力

次に、変数の値を出力する方法です。変数名を<<演算子でcoutオブジェクトに渡すことで、その変数の値がコンソール上に表示されます。

#include <iostream>

int main() {
    int num = 42;
    std::cout << num << std::endl;
    return 0;
}

上記のプログラムを実行すると、以下のような結果が得られます。

42

複数の変数の出力

複数の変数を同時に出力する場合は、以下のように書くことができます。

#include <iostream>

int main() {
    int num1 = 10;
    int num2 = 20;
    std::cout << "num1: " << num1 << ", num2: " << num2 << std::endl;
    return 0;
}

上記のプログラムを実行すると、以下のような結果が得られます。

num1: 10, num2: 20

特殊文字の出力

最後に特殊文字(改行やタブなど)を含めた文字列や変数値を出力する方法です。特殊文字はバックスラッシュ\から始まるエスケープシーケンス(\n \t \\ \" \')で表現されます。以下は例です。

#include <iostream>

int main() {
    std::cout << "Hello,\tWorld!\n";
    
    int num = 100;
    std::cout << "num: \\" << num << ", \" \' \n" << std::endl;

    return 0;
}

上記のプログラムを実行すると、以下のような結果が得られます。

Hello,	World!
num: \100, " ' 

coutのフォーマット指定

C++のcoutでは、出力する際にフォーマット指定を行うことができます。

フォーマット指定を行うことで、出力される文字列の幅や精度などを調整することができます。

基本的なフォーマット指定

基本的なフォーマット指定は以下のように行います。

cout << "文字列" << 変数 << endl;

この場合、変数は自動的に適切な形式で出力されます。例えば、int型の変数を出力する場合は10進数で表示されます。

精度指定

浮動小数点数を出力する場合、小数点以下の桁数を制御するために精度指定が必要です。精度指定は、値の出力前にsetprecision()関数と組み合わせて使用します。

#include <iostream>
#include<iomanip>
using namespace std;
int main() {
    double num = 3.14159265358979323846;
    cout << setprecision(5) << num << endl;
    return 0;
}
3.1416

上記の例では、setprecision()関数を使用して小数点以下5桁目を四捨五入して表示するように設定しています。

幅指定

幅指定は、出力される文字列全体の幅を制御します。幅指定はsetw()関数を使用して設定します。

#include <iostream>
#include<iomanip>
using namespace std;
int main() {
    int num = 123;
    cout << setw(5) << num << endl; // "  123"

    return 0;
}
  123

上記の例では、setw(5)で幅5桁に設定し、num変数が右寄せされて表示されます。

左寄せ・右寄せ

デフォルトでは、値は右揃えに表示されますが、「left」というマニピュレーターを使用して左揃えにもできます。

int num = 123;
cout << left << setw(5) << num << endl; // "123  "
123  

上記の例では、「left」とsetw(5)を組み合わせて左揃えに設定し、num変数が左寄せされて表示されます。

基数指定

整数値を異なる基底表現(2進法、8進法、16進法)で出力することも可能です。これらの表現方法はマニピュレーターhex oct decまたたはbitset(n)関数(nビット長)で実現します。

int num = 255;
cout << hex << num << endl; // ff (16進法)
cout << oct << num << endl; // 377 (8進法)
ff
377

上記の例では、「hex」と「oct」マニピュレーターを使用してそれぞれ16進法と8進法表現した結果が表示されています。

その他のフォーマット指定

その他多くのフォーマットオプションがあります。

showpos uppercase showbase noshowpoint scientific fixedといったオプションもあるので色々試してみるといいでしょう。

coutの出力先の変更

C++のcoutは、標準出力に対して出力を行いますが、場合によってはファイルへの出力が必要な場合もあります。そこで、coutの出力先を変更する方法について解説します。

ファイルへの出力

ファイルへの出力を行うためには、ofstreamクラスを使用します。以下は、output.txtという名前のファイルに文字列を書き込む例です。

#include <iostream>
#include <fstream>

using namespace std;

int main() {
    ofstream ofs("output.txt");
    ofs << "Hello, World!" << endl;
    ofs.close();
    return 0;
}

上記コードでは、ofstreamクラスをofsという名前で宣言し、output.txtという名前のファイルを開いています。

そして、ofsに対して<<演算子で文字列を書き込み、最後にclose()メソッドでファイルを閉じています。

画面とファイルへの同時出力

画面とファイルへ同時に出力する場合は、ofscout2つに対して同じ出力処理を書くだけです。

#include <iostream>
#include <fstream>

using namespace std;

int main() {
    ofstream ofs("output.txt");
    cout << "Hello, World!" << endl;
    ofs << "Hello, World!" << endl;
    ofs.close();
    return 0;
}

目次