C 之預定義型別IO格式控制

2022-03-26 08:55:28 字數 2654 閱讀 2539

在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函式搭配。

下面用示例來驗證:

1

#include

"stdafx.h"2

#include

<

iostream

>

3#include

<

string

>45

intmain()

6

結果:

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)的部分狀態標誌:

下面用示例來驗證:

1

#include

"stdafx.h"2

#include

<

iostream

>

3#include

<

iomanip

>

//帶形參的操縱符必須含有該標頭檔案

4#include

<

string

>56

intmain()

7

結果:3.除了利用系統預定義的操縱符來進行io格式的控制外,使用者還可以自定義操縱符來合併程式中頻繁使用的io寫操作。定義形式如下:

輸出流自定義操縱符

ostream &操縱符名(ostream &s)

自定義**

return s;

輸入流自定義操縱符

istream &操縱符名(istream &s

1011

std::istream

&to16(std::istream&s)

//要求輸入的數為十六進製制數

1216

1718

intmain()

19結果:

C 之預定義型別IO格式控制

原文傳送門 在c語言裡,我們可以通過函式printf和scanf來進行格式化控制。而在c 中仍然包含了前者,但還提供了以下兩種格式控制的方法 1 使用流成員函式進行格式控制 2 使用預定義操作符進行格式控制。下面我來一一介紹 1.流成員函式主要是指ios類 流基類 中的,分別有 1 設定狀態標誌流成...

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 函...