競技プログラミング講習/標準入出力

概要

今回は、競技プログラミングにおいてとても重要な標準入出力について解説します。
標準入出力が必要な問題は全てと言ってもいいので、必ずできるようになりましょう。

重要語

標準入力

基本的にはキーボードからの入力

標準出力

基本的には画面への出力

必要語

今回の必要語はありません。

コード例

これは、A - Welcome to AtCoderに対する回答です。
a + b + cの計算結果と文字列型変数sの中身をスペース区切りで出力します。
Welcome to AtCoder
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    string s;
    cin >> s;
    cout << (a + b + c) << " " << s << endl;
    return 0;
}

標準出力

基本

std::cout << "文字列" << std::endlでダブルクォーテーション内の文字列出力して最後に改行を行います。
以下のコードで"Hello, world!"と出力することができます。
Hello, world
#include <bits/stdc++.h>
using namespace std;
int main() {
    cout << "Hello, world!" << endl;
    return 0;
}

endl

また、最後のstd::endlは改行だと思ってもらってもいいですが、正確には改行してバッファをフラッシュします。
そのため、以下のコードを実行すると同じく"Hello, world!"と出力されます。
#include <bits/stdc++.h>
using namespace std;
int main() {
    cout << "Hello,";
    cout << " world!" << endl;
    return 0;
}

複数

さらに、<<でつなげることによって一文で複数出力することもできます。 そのため、以下のコードを実行すると同じく"Hello, world!"と出力されます。

            
#include <bits/stdc++.h>
using namespace std;
int main() {
    cout << "Hello," << " world!" << endl;
    return 0;
}

変数

std::cout << 変数名 << std::endl;で変数の値を出力することができます。 そのため、以下のコードを実行すると10と出力されます。
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a = 10;
    cout << a << endl;
    return 0;
}

標準入力

基本

std::cin >> 変数名で入力を行います。
以下のコードで変数aに入力することができます。
例えば10と入力すると、そのまま10と出力されます。
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a;
    cin >> a;
    cout << a << endl;
    return 0;
}

複数

スペース区切りまたは改行区切りで複数の入力が与えられる場合があります。
C++の場合スペース区切りであろうと改行区切りであろうとあまり関係なく、>>でつなげることで複数の入力をを受け取ることができます。この場合
10(改行)20(スペース)30
10(スペース)20(改行)30
10(スペース)20(スペース)30
10(改行)20(改行)30
のすべてを正しく受け取ることができ、10 20 30と表示されます。
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a, b, c;
    cin >> a;
    cin >> b >> c;
    cout << a << " " << b << " " << c << endl;
    return 0;
}

文字列

文字列の入力も同じく、以下のコードを実行すると入力した文字列がそのまま出力されます。
#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    cin >> s;
    cout << s << endl;
    return 0;
}

#include <bits/stdc++.h>

これって何?

#include <bits/stdc++.h>はC++の標準ライブラリを一括でインクルードすることができます。たとえば、cincoutを使うなら#include <iostream>を、 stringを使うなら#include <string>を書けばよいのですが、これらを使うたびに書いていては時間がもったいないので、これを使用しています。
また、時間の短縮という点については、using namespace std;と冒頭に記述することで、std:: と書く手間を省くことができます。しかし、名前空間の衝突などの問題があるため、使用するときは注意しましょう。