C++の基礎とコンソール
2012年12月9日:C++
C++におけるコンソールにおける入出力について解説します。
また、C言語とC++における違いを簡単に説明します。
名前空間の概念も紹介します。
コンソールにおける入出力
C言語ではprintf()やscanf()といった関数を使ってコンソールに文字を表示したり値を取得してきました。
C++ではこれらの関数でなくcoutやcinというのを使います。
出力:cout
値を出力するには
を使用します。
例えば、int型の変数aの数値をコンソールへ出力したい場合は
int a=1; cout << a;
とします。これで「1」がコンソールへ表示されます。
入力:cin
キーボードからの入力が欲しい場合は
を使います。
サンプル
では上記のcout,cinを使ってプログラムを作成してみます。
#include <iostream> using namespace std; int main(void){ int a,b,x; a=10; b=20; cout<<"値a:"; cout<<a<<"\n"; cout<<"値b:"; cout<<b<<"\n"; cout<<"x=??:"; cin>>x; cout<<"x="<<x<<"\n"; return 0; }
実行すると以下のようになります。
値a:10
値b:20
x=??:12
x=12
C言語とC++の違い
C言語とC++の違いについてみていきます。
#includeが違う
まず、C言語では
#include <stdio.h>
によりコンソール入出力のライブラリを導入していました。一方、C++では
#include <iostream>
を導入します。C++用のコンソール入出力ライブラリがiostream.hに入っています。
よく見てみるとわかりますが、C++では「.h」という拡張子がついていません。
C++の標準ヘッダファイルには「.h」をつけないというルールになっています。
なぜ付けなくなったかは記事の最後にあるコラムを読んでください。
名前空間
C++では
using namespace std;
というC言語では見慣れない命令がみられます。これは名前空間と呼ばれるものです。
この場合stdという名前空間を使うと宣言しています。
この宣言がないと
std::out<<a;
というようにstd::を名前空間stdの命令につけなくてはいけません。
stdという名前空間を使うという宣言をいれることで、
out<<a;
といきなりかけるのです。
名前空間はライブラリごとの関数が同じ名前にならないように導入されました。
なぜ「.h」がつかなくなったかを説明します。
C++の初期段階では、名前空間は導入していませんでした。
そして、途中からやはり名前空間があったほうがいいということになり、名前空間を付け加えました。
でも、いきなり名前空間を加えるといっても困りますよね。
これまで作ってきたプログラムが動かないじゃないか。
ということになるので、
従来のプログラムは
#include <iostream.h>
を使い、名前空間を導入したものは
#include <iostream>
にしようということになりました。
「.h」なしは名前空間導入によるつじつま合わせというのが答えです。
ためしに、
#include <iostream.h> int main(void){ int a,b,x; a=10; b=20; cout<<"値a:"; cout<<a<<"\n"; cout<<"値b:"; cout<<b<<"\n"; cout<<"x=??:"; cin>>x; cout<<"x="<<x<<"\n"; return 0; }
としてもプログラムはコンパイルできるので名残を確認するといいでしょう(警告Warningはでますが)。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー