C++ 入門

出力をしよう

ここでは、文字の表示(これからは「出力」と呼びます)について学んでいきます。

コードのテンプレート

下にあるソースコードはこのレッスンで使うソースコードの雛形(テンプレート)です。
ここに書かれていることの意味はまだ覚えるには早すぎるので、まずはおまじない程度に思っておいてください。

#include <iostream>

using namespace std;

int main(){

}

この部分は時々省略していきますが、ソースコードは「{」と「}」の間に書いていきましょう。

出力の仕方

さて、本題に入ります。

出力は、「cout << 出力したいもの << endl;」とすることでできます。
例えば、「Hello World!」と出力する場合、以下のように書きます。

#include <iostream>

using namespace std;

int main(){
    cout << "Hello World!" << endl;
}

少しずつ説明していきましょう。

まず、最初のの「cout」の部分です。
この部分は、「この後に続くことを出力するよ!」という合図です。上のソースコードの場合だと「"Hello World"」と「endl」を順に出力します。そして、それらをつなぎ合わせているのが「<<」です
ここで、「endl」というものが出てきました。これは改行を表す文字です。これをつけると、つけた部分の直前で改行を行います。つまり、

cout << "1行目" << endl << "2行目" << endl;
と記述すると、
1行目
2行目
という出力が返ってくることになります。

C++のルール - 文と「;」 〜C++の柔軟性〜

C++のプログラムは、「文」が基本単位です。先ほどのソースコードだと、

cout << "Hello World!" << endl;

これが一つの「文」です。C++にはこのような文を書く上でいくつかルールがあります。それは、
文の最後には必ず「;(セミコロン)」を書く
文は基本的に半角で書く(文字リテラルなどを除く)
ということです。試しに、先ほどのコードからセミコロンを抜いてみましょう。下のようになります。

#include <iostream>

using namespace std;

int main(){
    cout << "Hello World!" << endl
}

(エディタによっては最後の「{」に赤線があると思います)
おそらくこれを実行すると、エラーが起こると思います。エラーは基本的にソースコードがルールを破ってしまっている場合に発生します。この場合だと、「endl」の直後に「;」がないことが原因です。

少し面倒そうですが、逆に言ってしまえばこれらのルールさえ守っていればあとは自由に記述できます。つまり、

cout << "Hello World!"
<< endl;

このような記述や、

cout << "Hello World!"
<< endl;

このような記述も可能です。
ただ、以下のような記述だとエラーが起こってしまいます。

co
ut << "Hello World!" << endl;
cout << "Hello World!" << en dl;
cout << "Hello 
World!" << endl;

これらに共通して言えるのは、「何かを表すものを改行・空白で分断している」ということです。3つめについてはあとの文字リテラルで説明しますが、残りの二つはどちらも「cout」と「endl」のような、「その単語で意味を持つもの」を改行・空白で分断してしまっています
これを踏まえて、C++のルールに次のことを追加しておきましょう
「その単語で意味を持つもの」は改行や空白で分断しない

文字リテラル

文字リテラルとは、「""(ダブルクォーテーション)」で囲われたもののことです。たとえば、"Hello World!"などが該当します。これと似たもので「文字列」がありますが、両者の違いは後のパートで説明します。
文字列の内容は自由です。例えば、"cout"と書いてもその文字リテラルは、出力を意味するcoutとは何の関係性もありません。ただの文字列として扱われます。 しかし、「""」で囲われていない文字列は全てC++の機能や変数(次の章で説明します)として扱われてしまいます。そのため、

cout << Hello World;
と記述するとエラーが発生してしまいます。HelloWorldの名前を持つC++の機能が存在しないからです。

改行の方法 - C++の特殊文字達

ここでは、文字リテラルで改行を表現する方法を改行を表現する方法を説明します。
文字リテラルで改行を表現するには「¥n」という文字を使います。以下のように使います。

cout << "Hello World¥n";

これは、

cout << "Hello World" << endl;

これとほとんど同じ意味です。どちらを使うかはユーザー次第です。

「¥n」のような、特殊な表現をさせる文字を「特殊文字(エスケープシーケンス)」と呼びます。C++には以下のようなエスケープシーケンスがあります。全て知っておく必要はないですが、少し覚えておくといいでしょう。

名前 役割
¥n 改行
¥a 警告音
¥b バックスペース
¥r 行の先頭に戻る
¥f 改ページ
¥t 水平タブ
¥v 垂直タブ
¥¥ 文字としての¥
¥" 文字としての"
¥' 文字としての'
¥0 ヌル文字(何もしません)

数値の出力

2や3.14などの数値を出力したい場合は「""」で囲う必要はないです。そのため、

cout << 3.14 << endl;

このように書くことで数値が出力できます。

これでこのパートは終了です!
好きな文字や数字を出力させてみてください