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()
メソッドでファイルを閉じています。
画面とファイルへの同時出力
画面とファイルへ同時に出力する場合は、ofs
とcout
2つに対して同じ出力処理を書くだけです。
#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;
}