傳統的C函數庫中scanf和printf不是類型安全的,另外,scanf/printf系列函數把要讀寫的變量和控制讀寫格式的信息分開來,這都是很早的用法啦。iostream的cout和cin則相對高級的多!因為類型安全和擴展性是C++的基石,“《”和“》”也提供操作符重載來輸出、輸入用戶自己定義的數據類型,另外,在傳遞讀和寫的對象時采用的語法形式也是相同的。
如:
class Rational {
public:
Rational(int numerator = 0, int denominator = 1);
...
private:
int n, d;// 分子,分母
friend ostream& operator<<(ostream& s, const Rational& );
};
ostream& operator<<(ostream& s, const Rational& r)
{
s<< r.n << '/' << r.d;
return s;
}
但是下列情況下會使用C庫函數:
(1)有些iostream的操作實現起來比相應的C stream效率要低,所以不同的選擇會給你的程序有可能帶來很大的不同。
(2)在標準化的過程中,iostream庫在底層做了很多修改,所以對那些要求最大可移植性的應用程序來說,會發現不同的廠商遵循標準的程度也不同。
(3)iostream庫的類有構造函數而<stdio.h>里的函數沒有,在某些涉及到靜態對象初始化順序的時候,如果可以確認不會帶來隱患,用標準C庫會更簡單實用。
使用了#include <iostream>, 得到的是置于名字空間std下的iostream庫的元素;如果使用#include <iostream.h>,得到的是置于全局空間
的同樣的元素。在全局空間獲取元素會導致名字沖突,而設計名字空間的初衷正是用來避免這種名字沖突的發生。
使用了#include <iostream> 后面要接:using namespace std;新的c++庫舍棄了<iostream.h>,你如果include它,編譯器
會提示你找不到這個頭文件。