cin/cout)ifstream/ofstream/fstream)istrstream/ostrstream/strstream)C++ 以統一的流介面抽象三種模式,底層調用不同類別實現。
| 維度 | C (printf/scanf) | C++ (流) |
|---|---|---|
| 型別檢查 | 無 (執行期崩潰) | 編譯期強制 (型別安全) |
| 擴展性 | 僅標準型別 | 支援自訂類別 (重載 << / >>) |
| 統一介面 | 不同函式族 | 同一組運算子 處理所有型別 |
| 複雜度 | 簡單 | 較高 (類別體系、狀態、格式) |
// C: 編譯通過,執行期災難
printf("%d", 3.14f); // 讀取 float 位元模式當 int
printf("%d", "C++"); // 印出字串位址
scanf("%d", i); // 漏 & → 寫入位址 0x1
// C++: 編譯直接報錯
cout << 3.14f; // 正確輸出 3.14
cin >> i; // 型別匹配才通過
class Point { int x, y; };
ostream& operator<<(ostream& os, const Point& p) {
return os << '(' << p.x << ',' << p.y << ')';
}
Point p{3,4};
cout << p; // (3,4) — 與內建型別完全一致體驗
<</>> 走高階,read()/write() 走低階C++ I/O 以型別安全消除整類執行期錯誤,以擴展性統一內建/自訂型別操作體驗,以雙軌高低階兼顧開發效率與執行效能。代價是較陡峭的學習曲線,但長期收益遠超成本。