この章では、C++における画面出力・キーボード入力の基本を確認します。また、標準機能を管理する「名前空間」の使い方についても紹介します。
#include <iostream>
#include <string>
using namespace std;
int main() {
string name;
cout << "名前を入力してください:";
cin >> name;
cout << "こんにちは、" << name << " さん!" << endl;
return 0;
}
cout << で画面にメッセージを表示cin >> でキーボードから入力を受け取る#include <string> を追加している| 演算子 | C++での意味 | 例 |
|---|---|---|
<< |
出力ストリーム演算子 | cout << "Hello" << endl; |
>> |
入力ストリーム演算子 | cin >> 変数; |
<<, >> は ビット演算子 だったint でも string でも同じように使えるusing namespace std; を書かない場合、標準ライブラリの機能には std:: を付ける必要があります。
#include <iostream>
#include <string>
int main() {
std::string name;
std::cout << "名前を入力してください:";
std::cin >> name;
std::cout << "こんにちは、" << name << " さん!" << std::endl;
return 0;
}
std::cout のように 標準ライブラリの機能を明示 して書く方法using namespace std; を使わず、名前の衝突を避ける書き方std:: を明示する方が推奨される#include <string> と std::string は 別々のことを指示 していて、どちらか片方だけでは足りません。
| 書くもの | 役割 | イメージ |
|---|---|---|
#include <string> |
string 機能をコードに取り込む | 本棚に「string」という本を追加する |
std::string |
その string が どの名前空間にあるか を指定 | その本は「std」というセクションにある、と指示する |
#include <string> を書かない → 「string って何?知らない型だよ」とエラーstd:: を書かない(かつ using namespace std; もない)→ 「string は知ってるけど、どこの string?グローバルにはないよ」とエラー#include <stdio.h> はそれだけで printf が使えました。これは C言語には「名前空間」という仕組みがないからです。C++ では #include だけでは足りない、というのが大事なポイントです。
名前空間とは、関数や変数・クラスなどの名前が衝突しないよう「グループ分け」する仕組みです。
std:: を付けることで「これは標準ライブラリの cout だ」と明示できます。
| 書き方 | 特徴 |
|---|---|
using namespace std; を使う |
省略して書ける。小規模・学習向き |
std:: を毎回書く |
明示的で安全。大規模開発に向く |
// io.cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string name;
int age;
cout << "名前を入力してください:";
cin >> name;
cout << "年齢を入力してください:";
cin >> age;
cout << "こんにちは、" << name << " さん!" << endl;
cout << "あなたは " << age << " 歳ですね。" << endl;
return 0;
}
using namespace std; を削除し、std::cout、std::cin、std::string、std::endl と全て明示する形に書き換えるusing namespace std; を消した後、エラーが出る箇所を std:: 付きに書き換えましょう。std::string city;、std::cin >> city; のように書けます。
次のコードを実行し、「Sato」と入力した場合、何が表示されるか。
#include <iostream>
#include <string>
using namespace std;
int main() {
string name;
cout << "名前を入力してください:";
cin >> name;
cout << "こんにちは、" << name << " さん!" << endl;
return 0;
}
cin >> name で "Sato" が入力され、cout << "こんにちは、" << name << " さん!" で「こんにちは、Sato さん!」と表示されます。
using namespace std; を書かない場合、cout を使うための正しい書き方はどれか。
cout は std 名前空間に属するため、using namespace std; なしで使う場合は std::cout と書く必要があります。
次のコードはコンパイルエラーになる。その原因として正しいものはどれか。
#include <iostream>
int main() {
cout << "Hello" << endl;
return 0;
}
cout と endl は std 名前空間に属しています。using namespace std; を書くか、std::cout、std::endl と明示する必要があります。
C++で複数の値を cout で一度に出力したい場合の正しい書き方はどれか。変数 x = 10 として「x の値は 10 です」と出力する。
<< を繰り返すことで複数の値を連続して出力できます。+ での文字列結合(ア)は int 型と直接使えないためエラーになります。
cout << で出力、cin >> で入力<< と >> はC言語のビット演算子とは異なり、入出力に使われる(演算子オーバーロード)std 名前空間に整理されているusing namespace std; で省略可能だが、std:: を明示する書き方も覚えておく