close

按此前往C++完整教學目錄

 

 

 要設定輸入/輸出的格式,可以使用C++提供的「I/O控制參數(或稱 I/O旗幟參數)」與setf()函式。

C++先說明I/O控制參數,I/O控制參數是定義在ios_base類別底下的整數常數,呼叫時需要在其名稱前面加上ios_base::。各種I/O控制參數的名稱和功用如下:

旗幟(flag)參數名稱

旗幟參數群組

功能

Ios_base::left

Ios_base::

adjustfield

輸出資料靠左對齊

Ios_base::right

輸出資料靠右對齊

Ios_base::internal

輸出資料正負號靠左對齊,數字靠右對齊

Ios_base::dec

Ios_base::

basefield

數據以十進位輸出(系統預設為成立)

Ios_base::hex

數據以十六進位輸出

Ios_base::oct

數據以八進位輸出

Ios_base::fixed

Ios_base::

floatfield

數據以小數點方式輸出

Ios_base::scientific

數據以科學記號方式輸出

Ios_base::showpoint

 

顯示浮點數的小數點與末位的0

Ios_base::showbase

 

八進位數字,數字之前加一個0

十六進位數字,數字之前加上0x

Ios_base::showpos

 

若數據為正數,在其之前加一個+

Ios_base::uppercase

 

十六進位數字與科學記號的字母,用大寫

Ios_base::skipws

 

輸入時,空白字元當作終止字元(系統預設為成立)

同一個旗幟參數群組中的旗幟參數,是不能同時設定為成立的。以下是利用I/O物件成員函式setf(旗幟參數)來設定旗幟參數為成立:

(1) 若要設定的旗幟參數有其所屬的旗幟參數群組,那麼:

setf(旗幟參數 , 旗幟參數群組);  //設定該旗幟參數為成立,

如:

cout.setf(ios_base::hex,ios_base::basefield);

cout<<62234<<endl;  //顯示 f31a

cin.setf(ios_base::hex,ios_base::basefield);

cin>>a; cout<<a;  //若輸入為12e3,則顯示12e3

(2) 若要設定的旗幟參數並沒有所屬的旗幟參數群組,那麼:

setf(旗幟參數 );  //設定該旗幟參數為成立,

如:

cout.setf(ios_base::showpoint);

cout<<2.334<<endl;  //顯示2.33400

(3) 當旗幟參數設定為成立後,會一直持續。也就是說,接下來的I/O物件的輸入/輸出格式都會以旗幟參數為準。若使用者不想要再以此種格式輸入/輸出,則可將旗幟參數重設或消除。

若旗幟參數有其所屬的旗幟參數群組,則需使用setf(旗幟參數 , 旗幟參數群組);來重設旗幟參數,若沒有其所屬的旗幟參數群組,則使用unsetf(旗幟參數);使旗幟參數恢復為不成立的狀態,如:

cout.setf(ios_base::hex,ios_base::basefield);

cout<<62234<<endl;  //顯示 f31a

cout.setf(ios_base::dec,ios_base::basefield);

cout<<62234<<endl;  //顯示 62234

又如:

cout.setf(ios_base::showpoint);

cout<<2.334<<endl;  //顯示2.33400

cout.unsetf(ios_base::showpoint);

cout<<2.334<<endl;  //顯示2.334

 

 

上一篇:檔案讀寫(IO) 簡介

下一篇:檔案管理 輸出排版

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()