文章目錄
- 【C++語法】輸出的設置
iomanip
與std::ios
中的流操縱符 - 1.
iomanip
中的流操縱方法 - 1.1 位寬操作類
- 1.1.1
std::setw(x)
- 1.1.2
std::setfill(c)
- 1.1.3
std::left
- 1.1.4
std::right
- 1.1.5
std::internal
- 1.1.1
- 1.2 小數操作類
- 1.2.1
std::fixed
- 1.2.2
std::setprecision(x)
- 1.2.3
std::scientific
- 1.2.4
std::showpoint
- 1.2.5
std::noshowpoint
- 1.2.1
- 1.3 整數操作類
- 1.3.1
std::hex
- 1.3.2
std::dec
- 1.3.3
std::oct
- 1.3.4
std::showbase
- 1.3.5
std::noshowbase
- 1.3.1
- 1.4 布爾值操作類
- 1.4.1
std::boolalpha
- 1.4.2
std::noboolalpha
- 1.4.1
- 1.5 其他操作類
- 1.5.1
std::uppercase
- 1.5.2
std::nouppercase
- 1.5.3
std::showpos
- 1.5.4
std::noshowpos
- 1.5.1
- 2.
std::ios
中的流操縱方法 - 2.1 格式設置函數
- 2.1.1
std::resetiosflags(f)
- 2.1.2
std::setiosflags(f)
- 2.1.1
- 2.2
std::ios
的流操縱符
- 1.
【C++語法】輸出的設置 iomanip
與 std::ios
中的流操縱符
iomanip
是 C++ 標準庫中用于格式化輸出的頭文件,提供了多種流操縱符(Manipulators),用于控制輸出的對齊、寬度、精度、填充字符等。同時,這里面還會有 std::ios
中的流操縱符。還有這篇文章將會詳細的講解,希望能夠幫上你
1. iomanip
中的流操縱方法
這些是 std
相關的標志位控制函數,可以直接用于 <<
像輸出字符串一樣輸出調整格式,但是只會對這一條語句中的內容生效
1.1 位寬操作類
1.1.1 std::setw(x)
std::setw(x)
可以為下一個輸出內容設置位寬為 xxx,也就是占用占用 xxx 個字符位,空缺的用某種字符補位。占位符默認為空格,且向右對齊
1.1.2 std::setfill?
std::setfill(c)
與 std::setw(n)
配合,可以設置占位符為 ccc,ccc 是字符,不是字符串
1.1.3 std::left
std::left
與 std::setw(n)
配合,可以設置輸出內容為左對齊方式
1.1.4 std::right
std::right
與 std::setw(n)
配合,可以設置輸出內容為右對齊方式(默認)
1.1.5 std::internal
std::internal
與 std::setw(n)
配合,表示設置數字為符號左對齊,數字右對齊的方式
1.2 小數操作類
1.2.1 std::fixed
std::fixed
用于固定輸出的小數位數,例如 std::cout << std::fixed << 3.14000
輸出 3.14000
而不是 3.14
1.2.2 std::setprecision(x)
std::setprecision(x)
表示設置浮點數保留小數點后 xxx 位,通常與 std::fixed
配合
為什么不能單獨用
std::setprecision(x)
?
單獨用是語法正確的,但是,在小學數學老師講四舍五入時講到過一個誤區,4.9994.9994.999 四舍五入保留一位小數應該等于 5.05.05.0 而不是 555。加上std::fixed
防止去掉小數部分末尾的 000
1.2.3 std::scientific
std::scientific
用于將浮點數以科學計數法形式輸出,e
默認小寫,想要調成大寫 E
可以使用 std::uppercase
,默認 std::nouppercase
1.2.4 std::showpoint
std::showpoint
用于強制讓所有的數字加上小數點,例如 1
輸出為 1.
,2.72
輸出 2.72
1.2.5 std::noshowpoint
std::noshowpoint
用于讓所有的數字不強制性地加上小數點,例如 3
輸出 3
(默認)
1.3 整數操作類
1.3.1 std::hex
std::hex
設置整數以十六進制輸出,a
~ f
默認小寫,想要切換大寫使用 std::uppercase
,默認 std::nouppercase
1.3.2 std::dec
std::dec
設置整數以十進制輸出(默認)
1.3.3 std::oct
std::oct
設置整數以八進制輸出
1.3.4 std::showbase
std::showbase
設置顯示進制前綴,例如十六進制數前面加上 0x
(或 0X
),八進制數前面加上一個 0
1.3.5 std::noshowbase
std::noshowbase
設置不顯示進制的前綴(默認)
1.4 布爾值操作類
布爾值是什么?
布爾值(Boolean Value),表示一種條件是否成立,111 或true
表示成立,000 或false
表示不成立,只有兩個值。這個東西會在下一章的條件語句中提到
1.4.1 std::boolalpha
std::boolalpha
設置布爾值輸出 true
或 false
1.4.2 std::noboolalpha
std::noboolalpha
設置布爾值輸出 1
或 0
(默認)
1.5 其他操作類
1.5.1 std::uppercase
std::uppercase
設置十六進制字符 A
~ F
大寫,設置科學計數法 E
大寫
1.5.2 std::nouppercase
std::nouppercase
設置十六進制字符 a
~ f
小寫,設置科學計數法 e
小寫
1.5.3 std::showpos
std::showpos
使正數顯示出 +
1.5.4 std::noshowpos
std::noshowpos
使正數不顯示出 +
2. std::ios
中的流操縱方法
這些事 std::ios
(或 std::ios_base
)相關的流操縱符,使用另外的函數設置格式,可以讓多行的 std::cout
使用同一個格式標志,還可以重置、疊加,它們的頭文件也是 iomanip
2.1 格式設置函數
2.1.1 std::resetiosflags(f)
將之前的所有格式標志去除,并添加一個 std::ios
流操縱符 f
,也就是格式重定義
2.1.2 std::setiosflags(f)
再之前的基礎上疊加一個 std::ios
流操縱符 f
,也就是格式疊加
2.2 std::ios
的流操縱符
和 iomanip
流操縱符一樣,例如 std::fixed
、std::hex
,但是,在 std::ios
中,會寫成 std::ios::fixed
、std::ios::hex
等,在 std
后面加一個 ios