#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿