endl 才刷新顯示endl = 換行 + 強制刷新;\n = 僅換行 (不一定刷新)./prog > out.txtcout << val 依 val 型別調用對應重載cout:cerr << "Error!" << endl;endl 刷新cerrfloat a, b, c, disc;
cout << "please input a,b,c: ";
cin >> a >> b >> c;
if (a == 0)
cerr << "a is zero, error!" << endl; // 即時顯示錯誤
else if ((disc = b*b - 4*a*c) < 0)
cerr << "disc < 0, no real root" << endl; // 即時顯示錯誤
else {
cout << "x1=" << (-b + sqrt(disc))/(2*a) << endl;
cout << "x2=" << (-b - sqrt(disc))/(2*a) << endl;
}
執行 ./prog > result.txt 時,正常根輸出進檔案,錯誤訊息仍顯示螢幕——關鍵分離。
| 流 | 用途 | 緩衝 | 可重導向 | 典型場景 |
|---|---|---|---|---|
cout | 正常結果 | 是 | 是 | 報表、資料輸出 |
cerr | 錯誤/警告 | 否 | 否 | 即時錯誤通知 |
clog | 日誌/除錯 | 是 | 是 | 大量除錯資訊 |
善用三大輸出通道分工:cout 輸出業務結果、cerr 即時曝光錯誤、clog 記錄除錯軌跡。配合 Shell 重導向,實現「正常輸出入檔、錯誤上螢幕」的生產級輸出架構。