要控制C++中cout的輸出樣式,我們需要使用格式控制符。這些控制符來自<iomanip>頭文件,能幫助我們調整數字的顯示方式、對齊方式、小數位數等。本文通過簡單例子,帶你快速掌握常用的輸出格式控制技巧。
一、包含必要的頭文件¶
使用cout和格式控制符前,需包含以下頭文件:
#include <iostream> // 提供cout、cin等輸入輸出流
#include <iomanip> // 提供格式控制符(如setw、setprecision等)
using namespace std; // 避免每次寫std::
二、整數輸出:控制進制¶
默認情況下,cout輸出整數爲十進制。通過格式控制符可切換爲十六進制或八進制:
| 控制符 | 作用 | 示例(輸出10) |
|---|---|---|
dec |
十進制(默認) | cout << dec << 10; 輸出:10 |
hex |
十六進制(字母小寫) | cout << hex << 10; 輸出:a |
oct |
八進制 | cout << oct << 10; 輸出:12 |
注意:設置hex或oct後,後續輸出會保持該進制,直到手動重置爲dec。例如:
cout << dec << 10 << endl; // 十進制:10
cout << hex << 10 << endl; // 十六進制:a
cout << oct << 10 << endl; // 八進制:12
cout << dec << 10 << endl; // 重置爲十進制:10
三、浮點數輸出:控制小數位與計數法¶
浮點數(如3.1415926)的輸出可通過fixed、scientific和setprecision控制:
1. fixed:固定小數位數¶
用fixed指定小數點後保留n位小數,需配合setprecision(n)使用:
cout << fixed << setprecision(3) << 3.1415926 << endl; // 輸出:3.142(保留3位小數)
2. scientific:科學計數法¶
用scientific將數字以科學計數法(如1.23e+04)顯示,同樣配合setprecision(n):
cout << scientific << setprecision(3) << 12345.67 << endl; // 輸出:1.235e+04
3. setprecision(n):有效數字控制¶
默認情況下,setprecision(n)控制有效數字的位數(不使用fixed或scientific時):
cout << setprecision(3) << 12345.67 << endl; // 輸出:1.23e+04(有效數字3位)
cout << fixed << setprecision(3) << 12345.67 << endl; // 輸出:12345.670(固定3位小數)
四、對齊與寬度控制¶
通過setw(n)設置輸出寬度,left/right控制對齊方式,setfill(c)設置填充字符:
1. 設置寬度:setw(n)¶
setw(n)僅對緊隨其後的單個輸出項生效,不足時用填充字符補全:
cout << setw(10) << "Hello" << endl; // 輸出:" Hello"(寬度10,右對齊,默認空格填充)
cout << setw(10) << "World" << endl; // 輸出:" World"
2. 對齊方式:left/right¶
left左對齊,right右對齊(默認):
cout << left << setw(10) << "C++" << endl; // 輸出:"C++ "(左對齊,寬度10)
cout << right << setw(10) << "Python" << endl; // 輸出:" Python"(右對齊,寬度10)
3. 填充字符:setfill(c)¶
設置填充字符(如*或#),需配合setw(n):
cout << setfill('*') << setw(10) << "Test" << endl; // 輸出:"Test******"(寬度10,填充*)
五、常用技巧:endl與\n的區別¶
endl:換行並刷新輸出緩衝區,確保內容立即顯示(適合需要立即看到結果的場景)。\n:僅換行,不刷新緩衝區(輸出可能延遲,適用於性能優化)。
cout << "Hello" << endl; // 換行並刷新
cout << "World" << '\n'; // 僅換行,不刷新
總結¶
掌握C++輸出格式控制的關鍵是靈活使用<iomanip>中的操縱符:
- 整數:dec/hex/oct控制進制。
- 浮點數:fixed/scientific/setprecision控制小數位或科學計數法。
- 對齊:setw(n)+left/right/setfill(c)控制寬度與對齊。
多練習不同組合的示例,就能輕鬆讓輸出更規範、美觀!