C++セミナー(初級)入力処理

HOME->講習会->プログラミングセミナー->C++セミナー(初級)


変数に直接データを打ち込んでいては,毎回コンパイルをする必要があったり,そもそも変数を使う意味がなくなってしまいます.ここでは,入力されたデータを変数に格納する方法について紹介します.

目次

cstdioによる入力処理
iostreamによる入力処理

cstdioによる入力処理

C++セミナー(初級)出力処理でも説明したように「cstdio」は,C言語の「stdio.h」をC++用に置き換えたものです.それでは,実際にcstdioによる入力処理を行ってみましょう.

#include <cstdio>
int main()
{
    int i;
    std::scanf("%d", &i);
    std::printf("input num: %d\n", i);
}

プログラムを実行して,適当に数字を入力してEnterキーを押すと「input num: 〇〇」と表示されればOKです.「std::scanf」が入力されたデータを読み込むものになります.「std::printf」の変数の出力のように,フォーマット指定子を「” “」の間に記述し,その後ろにカンマ区切りで読み取ったデータを格納する変数を指定します.このとき,変数名の前に「&」をつけ忘れないようにしてください.スペース区切りやカンマ区切りで複数の文字を読む込む際には以下のようにします.

#include <cstdio>
int main()
{
    int i, j;
    std::scanf("%d %d", &i, &j);    // スペース区切りによる入力
    std::printf("input num: %d, %d\n", i, j);
    std::scanf("%d,%d", &i, &j);    // カンマ区切りによる入力
    std::printf("input num: %d, %d\n", i, j);
}

iostreamによる入力処理

iostreamを用いた入力処理を以下に示します.

#include <iostream>
int main()
{
    int i;
    std::cin >> i;
    std::cout << "input num: " << i << std::endl;
}

std::cinがデータを読む込むためのものになります.このとき,std::coutのように「<<」ではなく,「>>」であることに注意してください(<<の向きがデータの流れる向きと考える).cstdioの一例のプログラムと同じ挙動をすればOKです.スペース区切りやカンマ区切りで複数の文字を読む込む際には以下のようにします.

#include <iostream>
int main()
{
    char c;
    int i, j;
    std::cin >> i >> j;                // スペース区切りによる入力
    std::cout << "input num: " << i << ", " << j << std::endl;
    std::cin >> i >> c >> j;           // カンマ区切りによる入力
    std::cout << "input num: " << i << ", " << j << std::endl;
}

カンマ区切りによる入力はiostreamの場合,カンマを取り除く用の変数を用意する必要があるため,cstdioを用いたものに比べて,少し手間がかかります.