| 項目 | 舊式 <iostream.h> | 新式 <iostream> |
|---|---|---|
| 命名空間 | 全域命名空間 | 標準命名空間 std |
| 標準地位 | 非標準,編譯器擴展 | ISO C++ 標準 (C++98 起) |
| 相容性 | 舊代碼移植用 | 現代 C++ 必備 |
| 功能細節 | 可能與標準不符 | 標準化過程中修正過部分細節 |
// 舊式:直接使用
#include
int main() {
cout << "Hello" << endl; // 無需 std::
return 0;
}
// 新式:需指定命名空間
#include
int main() {
std::cout << "Hello" << std::endl; // 推薦寫法
// 或 using namespace std; (不建議用於頭文件)
return 0;
}
C 標頭檔改名前綴 c、去除 .h,內容同樣置於 std:
| C 標頭檔 | C++ 新式標頭檔 | 命名空間 |
|---|---|---|
<stdio.h> | <cstdio> | std |
<string.h> | <cstring> | std |
<stdlib.h> | <cstdlib> | std |
<math.h> | <cmath> | std |
舊式 C 標頭檔(如 <stdio.h>)為相容 C 仍保留支援,內容在全域命名空間。
std::ws、區域設定支援等),新舊標頭檔實體不保證一一對應。<iostream>、<vector>、<cstdio> 等)。using namespace std;,污染全域命名空間;在 .cpp 中局部使用或加前綴 std::。std::、修正因標準化細節差異導致的錯誤。using namespace std; 過渡,但長期應重構。誤區:「
<iostream.h>只是少打幾個字」
事實:涉及命名空間隔離、標準一致性、未來可維護性,差異本質深遠。
誤區:「C++ 專案不能用
<stdio.h>」
事實:可用,但建議改用<cstdio>並加std::,保持風格一致。