C++ 標準程式庫提供豐富的 I/O 功能,核心概念是 流——位元組序列。資料從裝置(鍵盤、磁碟、網路)流向記憶體為 輸入;從記憶體流向裝置(螢幕、印表機、磁碟)為 輸出。
| 標頭檔 | 用途 |
|---|---|
| <iostream> | 定義 cin、cout、cerr、clog 物件,對應標準輸入、輸出、非緩衝錯誤、緩衝錯誤流 |
| <iomanip> | 提供參數化流操控子(如 setw、setprecision)進行格式化 I/O |
| <fstream> | 檔案流處理,用於使用者控制的檔案讀寫 |
cout 是 ostream 類別實例,連接標準輸出裝置(通常為螢幕)。搭配 流插入運算子 << 使用:
#include <iostream>
using namespace std;
int main() {
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl;
return 0;
}
輸出: Value of str is : Hello C++
<< 可鏈式多次使用,編譯器依資料型別選擇適當多載。endl 換行並刷新緩衝區;\n 僅換行不刷新。cin 是 istream 實例,連接標準輸入裝置(通常為鍵盤)。搭配 流擷取運算子 >>:
char name[50];
cout << "請輸入您的名稱: ";
cin >> name;
cout << "您的名稱是: " << name << endl;
>> 會跳過前導空白字元,遇空白停止(不適合讀取含空格字串,改用 cin.getline())。cin >> name >> age;| 物件 | 緩衝模式 | 典型用途 |
|---|---|---|
cerr | 非緩衝 | 錯誤訊息,立即輸出,確保不遺失 |
clog | 緩衝 | 一般日誌資訊,效能較佳 |
兩者皆連接標準錯誤裝置(通常同螢幕),使用 << 操作。小程式差異不明顯,大型專案中應嚴格區分:錯誤用 cerr,日誌用 clog。
<iostream> 並 using namespace std; 或加前綴 std::。<iomanip> 格式化輸出:setw(10) 寬度、setprecision(4) 精度、fixed 定點表示法。if (!cin) 偵測輸入失敗,cin.clear() 重置錯誤旗標,cin.ignore() 清除緩衝區殘留字元。ios::sync_with_stdio(false); cin.tie(nullptr); 提升效能。