C++輸入輸出格式控制:cout如何控制輸出樣式

要控制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

注意:設置hexoct後,後續輸出會保持該進制,直到手動重置爲dec。例如:

cout << dec << 10 << endl;   // 十進制:10
cout << hex << 10 << endl;   // 十六進制:a
cout << oct << 10 << endl;   // 八進制:12
cout << dec << 10 << endl;   // 重置爲十進制:10

三、浮點數輸出:控制小數位與計數法

浮點數(如3.1415926)的輸出可通過fixedscientificsetprecision控制:

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)控制有效數字的位數(不使用fixedscientific時):

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)控制寬度與對齊。

多練習不同組合的示例,就能輕鬆讓輸出更規範、美觀!

小夜