C++中格式控制

來源:互聯網
上載者:User

格式控制

    在前面,輸入/輸出的資料沒有指定格式,它們都按預設的格式輸入/輸出。然而,有時需要對資料格式進行控制。這時需利用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類的成員 描        述
int get( ) 讀取並返回一個字元
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) 讀取規定長度的字串到緩衝區中
int peek( )  返迴流中下一個字元,但不移動檔案指標
istream& seekg(streampos) 移動當前指標到一絕對位址
istream&  seekg(streampos,seek_dir) 移動當前指標到一相對位址
streampos tellg( ) 返回當前指標
istream& ignore(int n=1,delim=EOF) 跳過流中幾個字元,或直到遇到指定的分界符為止
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.