原文地址:http://wonderow.cnblogs.com/archive/2005/06/21/178719.html
格式控制
???
在前面,輸入/輸出的數(shù)據(jù)沒有指定格式,它們都按缺省的格式輸入/輸出。然而,有時(shí)需要對數(shù)據(jù)
格式進(jìn)行控制。這時(shí)需利用ios類中定義的格式控制成員函數(shù),通過調(diào)用它們來完成格式的設(shè)置。ios類的格式控制函數(shù)如下所示:
long flags( ) const
|
返回當(dāng)前的格式標(biāo)志。
|
long flays(long newflag)
|
設(shè)置格式標(biāo)志為newflag,返回舊的格式標(biāo)志。
|
long setf(long bits) ?
|
設(shè)置指定的格式標(biāo)志位,返回舊的格式標(biāo)志。
|
long setf(long bits,long field)
|
將field指定的格式標(biāo)志位置為bits,返回舊的格式標(biāo)志。
|
long unsetf(long bits)
|
清除bits指定的格式標(biāo)志位,返回舊的格式標(biāo)志。
|
long fill(char c)?
|
設(shè)置填充字符,缺省條件下是空格。
|
char fill( )?
|
?返回當(dāng)前填充字符。
|
int precision(int val)?
|
設(shè)置精確度為val,控制輸出浮點(diǎn)數(shù)的有效位,返回舊值。
|
int precision( )
|
返回舊的精確度值。
|
int width(int val) ????
|
設(shè)置顯示數(shù)據(jù)的寬度(域?qū)?,返回舊的域?qū)挕?/font>
|
int width( )?
|
只返回當(dāng)前域?qū)挘笔挾葹?。這時(shí)插入操作能按表示數(shù)
據(jù)的最小寬度顯示數(shù)據(jù)。?
|
預(yù)定義的操縱算子
??? 使用成員函數(shù)控制格式化輸入輸出時(shí),每個(gè)函數(shù)調(diào)用需要寫一條語句,尤其是它不能用在插入或提取運(yùn)算符的表達(dá)式中,而使用操縱算子,則可以在插入和提取運(yùn)算符的表達(dá)式中控制格式化輸
入和輸出。在程序中使用操縱算字必須嵌入頭文件
iomanip.h
dec
|
十進(jìn)制的輸入輸出
|
hex
|
十六進(jìn)制的輸入輸出
|
oct ?
|
八進(jìn)制的輸入輸出
|
ws ?
|
提取空白字符
|
ends ?
|
輸出一個(gè)nul字符
|
endl
|
?
輸出一個(gè)換行字符,同時(shí)刷新流
|
flush
|
刷新流
|
resetiosflags(long)
|
請除特定的格式標(biāo)志位
|
setiosflags(long)
|
設(shè)置特定的格式標(biāo)志位
|
setfill(char)
|
設(shè)置填充字符
|
setprecision(int)
|
設(shè)置輸出浮點(diǎn)數(shù)的精確度
|
setw(int)
|
設(shè)置域?qū)捀袷阶兞?/font>
|
其它流函數(shù)
錯(cuò)誤處理
??? 在對一個(gè)流對象進(jìn)行I/O操作時(shí),可能會產(chǎn)生錯(cuò)誤。當(dāng)錯(cuò)誤發(fā)生時(shí),錯(cuò)誤的性質(zhì)被記錄在ios類的一個(gè)數(shù)據(jù)成員中。
ios類中定義的描述錯(cuò)誤狀態(tài)的常量:
goodbit
?
|
沒有錯(cuò)誤,正常狀態(tài)
eofbit
到達(dá)流的結(jié)尾??
|
failbit
|
I/O操作失敗,清除狀態(tài)字后,可以對流繼續(xù)進(jìn)行操作。
|
badbit
|
試圖進(jìn)行非法操作,清除狀態(tài)字后,流可能還可以使用。
|
hardfail
|
致命錯(cuò)誤,不可恢復(fù)的錯(cuò)誤。
|
ostream類的成員函數(shù)
流的其它成員函數(shù)可以從流中讀取字符或字符串,對流進(jìn)行無格式化的輸入 輸出操作,以及直接控制對流的I/O操作。
返回類型
|
ios類的成員
|
描 述
|
ostream*
|
tie(ostream*)
|
?? 將當(dāng)前流與指定的輸出流連接起來。每當(dāng)需要 讀取當(dāng)前流時(shí),連接的流會自動刷新。C++流庫已用cin.tie(cout)將輸入流與輸出流連接
起來。要取消與輸出流的連接可采用is.tie(0)
|
ostream*
|
tie( )
|
返回指向連接流的指針
|
返回類型
|
ostream類的成員
|
描 述
|
ostream&
|
put(char ch)
|
向流中輸出一個(gè)字符ch,不進(jìn)行任何轉(zhuǎn)換
|
ostream&
|
write(char*,int)
|
向流中輸出指定長度的字符串,不進(jìn)行轉(zhuǎn)換
|
ostream&?
|
flush( )
|
刷新流,輸出所有緩沖的但還未輸出的數(shù)據(jù)
|
ostream&
|
seekp(streampos)
|
移動流的當(dāng)前指針到給定的絕對位置
|
ostream&
|
seekp(sereamoff,seek_dir)
|
流的當(dāng)前指針類似與文件的當(dāng)前指針
|
streampos
|
teelp( )
|
返回流的當(dāng)前指針的絕對位置
|
istream類的成員函數(shù)
返回類型
|
istream類的成員
|
描 述
|
int
|
get( )
|
讀取并返回一個(gè)字符
|
istream&
|
get(char&c)
|
讀取字符并存入c中
|
istream&
|
get(char*ptr,int len,char delim='')
|
讀取指定的字符到緩沖區(qū)中,直到遇到指定的分界符為止,分界符不填入緩沖區(qū)。
|
istream&
|
getline(char*ptr,int
len,char delim='')
|
與get(char*ptr,int len,chardelim ='') 類似,但將分界符填
入緩沖區(qū)。
|
istream&
|
putback( )
|
將最近讀取的字符放回流中
|
istream&
|
read(char*,int)
|
讀取規(guī)定長度的字符串到緩沖區(qū)中 函數(shù)gcount()返回讀取的字節(jié)數(shù)
|
int
|
peek( )?
|
返回流中下一個(gè)字符,但不移動文
件指針
|
istream&
|
seekg(streampos)
|
移動當(dāng)前指針到一絕對地址
|
istream&?
|
seekg(streampos,seek_dir)
|
移動當(dāng)前指針到一相對地址
|
streampos
|
tellg( )
|
返回當(dāng)前指針
|
istream&
|
ignore(int n=1,delim=EOF)
|
跳過流中幾個(gè)字符,或直到遇到指定的分界符為止
|
getch()函數(shù)用于從鍵盤輸入一個(gè)字符,不回顯,包含頭文件<conio.h>中