これまでは、データを出力する話でしたが、今回からデータ入力もできるようになります^^
std::cin
C++では、キーボードから入力したデータを受け取る場合に 標準入力ストリームである
std::cin を使うことができます。デフォルトの標準入力はキーボードとなっています。
cin は istreamクラスのオブジェクトです。
次の例を見てください。
//std::cin を使うためには、iostream をインクルードしてください
#include <iostream>
using namespace std; //std::cin を cin に、std::cout, std::endlのstd::を書かないため
int main(void)
{
int num = 0;
cout << "Please input favorite number." << endl;
cin >> num;
cout << "Input number is " << num << endl;
return 0;
}
実行結果 赤字の4がキー入力です
# ./test
Please input favorite number.
4
Input number is 4
つづいて、文字列の入力を試してみます^^
#include <iostream>
using namespace std; //どうしてもstd::を書きたくない
int main(void)
{
char name[50];
cout << "Please input your name." << endl;
cin >> name; //入力された文字列を変数nameに格納します
cout << "Hello, " << name << ". How are you?" << endl;
return 0;
}
実行結果 赤字がキー入力です
# ./test2
Please input your name.
K.Yamagata
Hello, K.Yamagata. How are you?
cinを使うとscanf()関数と同様に1文字がスペースやタブで区切られて格納されます。
そのため以下のような入力をした場合、スペースのあとの文字は格納されません。
# ./test2
Please input your name.
K Yamagata //K と Yamagataの間にスペースを入れてEnter
Hello, K. How are you? //Kだけ表示された
もしスペース以下も格納したい場合は次のようにしてください。^^
//std::cinのメンバ関数 getline を使っています
cin.getline(name, sizeof(name));
標準入出力を使用するメリット
coutやcinでは、printf()やscanf()関数と比べると、書式と変数の対応を意識しなくて
よいので便利です。またcinでは変数に&をつけるのかなどと悩む必要もありません。
cout, cin せっかくなので、どんどん使っていきたいと思います(^^)
今日の名言
長生きすればするほど、物事に没頭できる人は、人間として一番大切な資格または天性を
備えている、と確信するようになった。成功者と失敗者の実力は、技量の点でも才能の点
でも、大差はないようだ。しかし知能も技能も体力もすべて等しい二人の人間が、同時に
スタートを切ったとすれば、没頭できる人間のほうが先に到達する。また、たとえ実力は
二流であっても、物事に没頭できるタイプであれば、没頭できないタイプの一流の人間に
勝つことが、しばしばある。
フレデリック・ウィリアムソン
愛してその人を得ることは最上である。愛してその人を失うことは、その次によい。
ウィリアム・メイクピース・サッカレー
不可能だと思わない限り、人間は決して敗北しない。
デール・カーネギー