C言語を学んだ皆さんにとって、C++は「C言語の進化版」です。基本的な文法は共通していますが、C++ではより安全で読みやすいコードを書くための機能が追加されています。この章では、C言語との主な違いをコードで確認しましょう。
C言語では printf と scanf を使っていましたが、C++では cout と cin を使います。
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
cout << "文字列" で画面に出力(printf の代わり)endl で改行(\n の代わりに使える)#include <iostream> を先頭に書くusing namespace std; を書くと std:: を省略できるC言語の scanf に相当するのが C++ の cin です。
#include <stdio.h>
int main() {
int num;
printf("数字を入力してください:");
scanf("%d", &num);
printf("入力値:%d\n", num);
return 0;
}
#include <iostream>
using namespace std;
int main() {
int num;
cout << "数字を入力してください:";
cin >> num;
cout << "入力値:" << num << endl;
return 0;
}
cin >> 変数 で入力(書式指定子 %d などが不要)&(アドレス演算子)が不要になった| 機能 | C言語 | C++ |
|---|---|---|
| 出力 | printf("Hello\n") |
cout << "Hello" << endl |
| 入力 | scanf("%d", &n) |
cin >> n |
| 文字列型 | char str[100] |
string str |
| 真偽値 | int(0か1) |
bool(true/false) |
| コメント | /* ... */ |
/* ... */ と // どちらも使える |
C言語では 0 と 1(または 0 以外)で真偽を表していましたが、C++ では bool 型が正式に用意されています。
#include <iostream>
using namespace std;
int main() {
bool isStudent = true;
if (isStudent) {
cout << "学生です。" << endl;
} else {
cout << "学生ではありません。" << endl;
}
return 0;
}
string 型で扱えます。#include <string> を追加すると使えます(using namespace std; があれば std::string と書かなくてよい)。
この授業では、演習ごとに新しい .cpp ファイルを作成します。
ただし、C++(C言語も同様)では 1つのプロジェクトに main() が2つ以上あるとビルドエラーになります。
次の手順でファイルを管理してください。
error LNK2005: main はすでに~で定義されていますhello.cpp)でビルド・実行して確認するhello.cpp を右クリックはい に変更types.cpp)を追加してコーディング開始01_01_hello.cpp、01_02_hello_mod.cpp)。
// hello.cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string name;
cout << "名前を入力してください:";
cin >> name;
cout << "こんにちは、" << name << " さん!" << endl;
return 0;
}
bool 型変数 isAdult を使い、18歳以上なら「成人です。」、未満なら「未成年です。」と表示するint age; で年齢を宣言し、cin >> age; で入力を受け取ります。bool isAdult = (age >= 18); のように比較結果を直接 bool 変数に代入できます。
次のC++コードを実行したとき、出力される結果として正しいものはどれか。
#include <iostream>
using namespace std;
int main() {
int x = 5;
cout << "x = " << x << endl;
return 0;
}
cout << "x = " << x << endl; は「x = 」という文字列のあとに変数 x の値(5)を繋いで出力します。結果は x = 5 となります。
C言語の scanf("%d", &num); に対応するC++の書き方として正しいものはどれか。
cin >> 変数名 でキーボードから入力を受け取ります。書式指定子やアドレス演算子(&)は不要です。
C++で bool 型の変数 flag = true を宣言したとき、cout << flag << endl; の出力は何か。
bool 型は 1(true)または 0(false)として出力されます。boolalpha マニピュレータを使うと "true" / "false" の文字列で表示できます。
次のうち、C++で 文字列 を扱うために使う型として正しいものはどれか。
string 型で文字列を扱います。使うには #include <string> が必要です。C言語の char[] と異なり、長さを気にせず扱えます。
printf ではなく cout << を使うscanf ではなく cin >> を使う(書式指定子・& 不要)bool 型(true/false)と string 型が正式に用意されている#include <iostream> と using namespace std; はほぼ必ず書く