iostreamについて
iostreamとは?
<iostream>ライブラリはいくつかの標準オブジェクトを自動的に定義する。
cin
標準入力
cout
標準出力
cerr
標準エラー出力
clog
バッファを使うcerr
抽出子(入出力演算子)
>>
入力演算子
例)cin >> 変数
※>>を使用するのはcinのみっぽい。他は<<でOK。
<<
出力演算子
例)cout << 変数
*****
using namespace std; について
***
namespace
プログラム要素(関数やクラスなど)を一纏めにするためのもの。
「名前空間」と訳されてる。
いまはまだよくわからんが、例
名前としてこの OKWeb /教えて! goo のカテゴリーを参考にすると、
次のようになります。
namespace education {
class economy;
void literature();
}
namespace society {
class economy;
double energy ();
}
すると、名前は上から順に、
education::economy
education::literature
society::economy
society::energy
になります。
効用としては、名前の衝突が避けられます。たとえば、
education::economy
society::economy
は全く別のものてす。
***
std
C++標準ライブラリ用の名前空間名。
名前空間を使うと、正式な名前は長くなり、
プログラムの読みやすさを損なうことがあります。
これを避けるために、using 宣言と using ディレクティブがあります。
***
using
using 宣言をすると、それ以後そのスコープでは
名前空間名を省略することができます。
例えば、using 宣言がなければ、
std::string str;
std::cout << "Hellow, world! << std::endl;
と書かなければ、標準準拠のコンパイラではエラーになりますが、
( endl を実行すると、改行してフラッシュする)
(A)using std::string
(A)using std::cout
(A)using std::endl
と宣言すると、std:: を省略して、
(B)string str;
(B)cout << "Hellow, world! << endl;
と使えるようになります。
using ディレクティブを使うと、その名前空間のプログラム要素は、
全て名前空間名を省略することができるようになります。例えば、
using namespace std;
と宣言すると、いちいち(A)を全て書かなくても(B)が書ける
(コンパイル・エラーにならない)ようになります。
using ディレクティブを使うと名前が衝突する可能性が増えるので、
新たにコーディングする場合は使うべきではないそうです。
名前空間がなかった昔の C++ のソースを標準準拠のコンパイラに
かけるときなどに、限定して使うことが推奨されています。
以上の説明は、概略のものです。
特に、名前空間名をいつ省略できるか、
省略した場合どのように解釈されるかについては注意が必要です。
*****
using namespace std;
これが名前空間のstdを使うって宣言なのはわかった。
でも、stdの名前空間内に入ってるものって何なのかがよくわからない。
まだわからなくてもいいのかな。いいということにしとこう。