原文傳送門:
在c語言裡,我們可以通過函式printf和scanf來進行格式化控制。而在c++中仍然包含了前者,但還提供了以下兩種格式控制的方法:(1)使用流成員函式進行格式控制;(2)使用預定義操作符進行格式控制。下面我來一一介紹:
1.流成員函式主要是指ios類(流基類)中的,分別有:
(1).設定狀態標誌流成員函式setf
一般格式:long ios::setf(long flags),呼叫格式:流物件.setf(ios::狀態標誌)
ios類的狀態標誌有:
因為狀態標誌在ios類中定義為列舉值,所以在引用這些值前要加上ios::,如果有多項標誌,中間則用"|"分隔;
(2).清除狀態標誌流成員函式unsetf
一般格式:long ios::unsetf(long flags),呼叫格式:流物件.unsetf(ios::狀態標誌);
(3).設定域寬流成員函式width
(4).設定實數的精度流成員函式precision
一般格式:int ios::precision(int n),呼叫格式:流物件.precision(n);//注:引數n在十進位制小數形式輸出時代表有效數字。在以fixed形式和scientific形式輸出時代表小數字數
(5).填充字元流成員函式fill
一般格式:char ios::fill(char ch),呼叫格式:流物件.fill(ch);//注:當輸出值不滿寬域時用填充符來填充,預設填充符為空格,它與width函式搭配。
下面用示例來驗證:
#include #include #include //帶形參的操作符需要包含該標頭檔案
using namespace std;
void main()
結果:
2.用ios類中的成員函式來進行io格式的控制總需要寫一條單獨的語句,而不能直接嵌入到io語句中去,顯得很不方便。因此c++又提供了一種用操縱符來控制io的格式。操縱符分為帶參和不帶參的兩種,帶參的定義在標頭檔案iomanip.h中,不帶參的定義在iostream.h中。下面分別是c++中的預定義操作符:
(1)dec:設定整數基數為10,用於輸出和輸入;
(2)hex:設定整數基數為16,用於輸出和輸入;
(3)oct:設定整數基數為8,用於輸出和輸入;
(4)ws:跳過輸入的空格符,用於輸入;
(5)endl:輸出乙個換行符並重新整理輸出流,用於輸出;
(6)ends:插入乙個空字元null,通常用來結束乙個字串,用於輸出;
(7)flush:重新整理乙個輸出流,用於輸出;
(8)setbase(n):設定整數的基數為n(可取0或10代表十進位制,8代表八進位制和16代表十六進製制,預設為0),用於輸入和輸出;
(9)setfill(c):設定填充符(預設為空格),用於輸出;
(10)setprecision(n):設定實數精度n,原理和成員函式precision一樣,用於輸出;
(11)setw(n):設定域寬n,用於輸出;
(12)setiosflags(flags):設定指定狀態標誌,多個用"|"分隔,用於輸出和輸入;
(13)resetiosflags(flags):清除指定狀態標誌,多個用"|"分隔,用於輸出和輸入;
操作符setiosflags(flags)和resetiosflags(flags)的部分狀態標誌:
下面用示例來驗證:
#include #include #include //帶形參的操作符需要包含該標頭檔案
using namespace std;
void main()
結果:
3.除了利用系統預定義的操縱符來進行io格式的控制外,使用者還可以自定義操縱符來合併程式中頻繁使用的io寫操作。定義形式如下:
輸出流自定義操縱符
ostream &操縱符名(ostream &s)
自定義**
return s;
輸入流自定義操縱符
istream &操縱符名(istream &s
C 之預定義型別IO格式控制
在c語言裡,我們可以通過函式printf和scanf來進行格式化控制。而在c 中仍然包含了前者,但還提供了以下兩種格式控制的方法 1 使用流成員函式進行格式控制 2 使用預定義操作符進行格式控制。下面我來一一介紹 1.流成員函式主要是指ios類 流基類 中的,分別有 1 設定狀態標誌流成員函式set...
c IO之預定義格式控制
在c語言裡,我們可以通過函式printf和scanf來進行格式化控制。而在c 中仍然包含了前者,但還提供了以下兩種格式控制的方法 1 使用流成員函式進行格式控制 2 使用預定義操作符進行格式控制。下面我來一一介紹 1.流成員函式主要是指ios類 流基類 中的,分別有 1 設定狀態標誌流成員函式set...
c 預定義型別輸入輸出的格式控制
1 用流成員函式進行輸入輸出格式控制 includeusing namespace std int main cout cout.width 10 設定域寬為10位 分析以上程式和執行結果,可以看出 1 在預設情況下,域寬取值為0,這個0意味著 無域寬,即資料按照自身寬度列印。2 當用width 函...