格式控制
當輸入/輸出的資料沒有指定格式,它們都按預設的格式輸入/輸出。然而,有時需要對資料
格式進行控制。這時需利用ios類中定義的格式控制成員函式,通過呼叫它們來完成格式的設定。ios類的格式控制函式如下所示:
long flags( ) const
返回當前的格式標誌。
long flays(long newflag)
設定格式標誌為newflag,返回舊的格式標誌。
long setf(long bits)
設定指定的格式標誌位,返回舊的格式標誌。
long setf(long bits,long field)
將field指定的格式標誌位置為bits,返回舊的格式標誌。
long unsetf(long bits)
清除bits指定的格式標誌位,返回舊的格式標誌。
long fill(char c)
設定填充字元,預設條件下是空格。
char fill( )
返回當前填充字元。
int precision(int val)
設定精確度為val,控制輸出浮點數的有效位,返回舊值。
int precision( )
返回舊的精確度值。
int width(int val)
設定顯示資料的寬度(域寬),返回舊的域寬。
int width( )
只返回當前域寬,預設寬度為0。這時插入操作能按表示數
據的最小寬度顯示資料。
預定義的操縱運算元
使用成員函式控制格式化輸入輸出時,每個函式呼叫需要寫一條語句,尤其是它不能用在插入或提取運算子的表示式中,而使用操縱運算元,則可以在插入和提取運算子的表示式中控制格式化輸
入和輸出。在程式中使用操縱算字必須嵌入標頭檔案
iomanip.h
dec十進位制的輸入輸出
hex十六進製制的輸入輸出
oct
八進位制的輸入輸出
ws
提取空白字元
ends
輸出乙個nul字元
endl
輸出乙個換行字元,同時重新整理流
flush
重新整理流resetiosflags(long)
請除特定的格式標誌位
setiosflags(long)
設定特定的格式標誌位
setfill(char)
設定填充字元
setprecision(int)
設定輸出浮點數的精確度
setw(int)
設定域寬格式變數
其它流函式
錯誤處理
在對乙個流物件進行i/o操作時,可能會產生錯誤。當錯誤發生時,錯誤的性質被記錄在ios類的乙個資料成員中。
ios類中定義的描述錯誤狀態的常量:
goodbit
沒有錯誤,正常狀態
eofbit
到達流的結尾
failbit
i/o操作失敗,清除狀態字後,可以對流繼續進行操作。
badbit
試圖進行非法操作,清除狀態字後,流可能還可以使用。
hardfail
致命錯誤,不可恢復的錯誤。
ostream類的成員函式
流的其它成員函式可以從流中讀取字元或字串,對流進行無格式化的輸入 輸出操作,以及直接控制對流的i/o操作。
返回型別
ios類的成員
描 述
ostream*
tie(ostream*)
將當前流與指定的輸出流連線起來。每當需要 讀取當前流時,連線的流會自動重新整理。c++流庫已用cin.tie(cout)將輸入流與輸出流連線
起來。要取消與輸出流的連線可採用is.tie(0)
ostream*
tie( )
返回指向連線流的指標
返回型別
ostream類的成員
描 述
ostream&
put(char ch)
向流中輸出乙個字元ch,不進行任何轉換
ostream&
write(char*,int)
向流中輸出指定長度的字串,不進行轉換
ostream&
flush( )
重新整理流,輸出所有緩衝的但還未輸出的資料
ostream&
seekp(streampos)
移動流的當前指標到給定的絕對位置
ostream&
seekp(sereamoff,seek_dir)
流的當前指標類似與檔案的當前指標
streampos
teelp( )
返回流的當前指標的絕對位置
istream類的成員函式
返回型別
istream類的成員
描 述
intget( )
讀取並返回乙個字元
istream&
get(char&c)
讀取字元並存入c中
istream&
get(char*ptr,int len,char delim='')
讀取指定的字元到緩衝區中,直到遇到指定的分界符為止,分界符不填入緩衝區。
istream&
getline(char*ptr,int
len,char delim='')
與get(char*ptr,int len,chardelim ='') 類似,但將分界符填
入緩衝區。
istream&
putback( )
將最近讀取的字元放回流中
istream&
read(char*,int)
讀取規定長度的字串到緩衝區中
intpeek( )
返回流中下乙個字元,但不移動文
件指標istream&
seekg(streampos)
移動當前指標到一絕對位址
istream&
seekg(streampos,seek_dir)
移動當前指標到一相對位址
streampos
tellg( )
返回當前指標
istream&
ignore(int n=1,delim=eof)
跳過流中幾個字元,或直到遇到指定的分界符為止
附:以16進製制形式列印記憶體資料:
#include
#include
using namespace std;
void foo( const void* buf, size_t len );
輸出:00 01 10 ff
77 be 9f 1a 2f dd 5e 40
補充(2008-11-06):
C 輸出流格式控制 iomanip
一 概述 在c 程式裡面經常見到下面的標頭檔案 include 這裡面iomanip的作用比較多 主要是對cin,cout之類的一些操縱運運算元,它是i o流控制標頭檔案。就像c裡面的格式化輸出一樣.以下是一些常見的控制函式的 二 使用 c 的格式化輸出控制,有兩種方式 2.1方式一 setiofl...
C 輸入輸出流格式控制
1.使用控制符控制輸出格式 控制符作用dec 設定整數的基數為10 hex設定整數的基數為16 oct設定整數的基數為8 setbase n 設定整數的基數為n n只能是16,10,8之一 setfill c 設定填充字元c,c可以是字元常量或字元變數 setprecision n 設定實數的精度為...
C 輸入輸出流格式控制
1.使用控制符控制輸出格式 控制符作用dec 設定整數的基數為10 hex設定整數的基數為16 oct設定 整數的基數為8 setbase n 設定整數的基數為n n只能是16,10,8之一 setfill c 設定填充字元c,c可以是字元常量或字元變數 setprecision n 設定實數的精度...