#4 C++で学ぶ標準入力の基本

C++における標準入力は、cinという機能を使うのが基本です。この記事では、C++で利用者からの入力を受け取る基本的な方法と、つまずきやすいポイントを解説します。

cinを使う

C++では、std::cinという機能を使って入力を受け取ります。

#include 
int age;
std::cout << "年齢を入力してください: ";
std::cin >> age;

>>という矢印のような記号を使って、入力された値を変数に流し込むイメージの書き方をします。

あらかじめ型を決めておく必要がある

C++では、変数の型をあらかじめ決めておく必要があるため、cinもその型に合わせて自動的に変換を試みます。数値型の変数に対して数字ではない文字を入力すると、想定外の状態になることがあるため、実際のプログラムでは入力のチェックも合わせて行います。

std::cin >> age;
if (std::cin.fail()) {
    std::cout << "数値を入力してください" << std::endl;
}

std::cin.fail()を使うと、直前の入力が失敗したかどうかを確認できます。

複数の値を一度に受け取る

cinは>>を連続して並べることで、複数の値をまとめて受け取れます。

int a, b;
std::cin >> a >> b; // 例: "3 5" と入力すると a=3, b=5

スペースや改行は自動的に区切りとして扱われます。

文字列を1行まるごと受け取る

cinは基本的にスペースで区切られた単語単位で読み込むため、スペースを含む文章をまるごと受け取りたい場合は、getline()という別の機能を使います。

std::string line;
std::getline(std::cin, line);
std::cout << line << std::endl;

C++ならではの注意点

cinとgetline()のどちらを使うかは、受け取りたい入力の形によって使い分ける必要があります。単語だけならcin、文章全体ならgetline()と覚えておくと、意図しない読み込みのずれを防げます。cin >>の後にgetline()を呼ぶと、直前の入力の改行文字が残っていて空行が読み込まれてしまう、というよくあるバグにも注意しましょう。

文字列を数値に変換する

getline()で受け取った文字列を数値として使いたい場合は、std::stoi(整数)やstd::stod(小数)を使います。

std::string input;
std::getline(std::cin, input);
int age = std::stoi(input);

数字ではない文字列を渡すと例外が発生するため、try・catchと組み合わせるとより安全になります。

まとめ

C++の標準入力はcinが基本ですが、スペースを含む入力にはgetline()を使います。cin.fail()での入力チェックやstd::stoiでの数値変換も含め、それぞれの使い所を理解しておくことが大切です。


本ページはプロモーションを含みます。

参考書籍(PR)

C++をもっと学びたい方には「新・明解C++入門編」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本