C++ 格式化輸出 及 輸入 流


輸入:

讀入:a+b,a-b,a/b等,cin>>a>>charOperation>>b>>endl;

 

 

enum {

          skipws  = 0x0001,  //跳過當天及后面所有連續的空白符。

          left  = 0x0002,

          right  = 0x0004,

          internal   = 0x0008,//在指定的域寬內數值的符號按左對齊、數值本身按右對齊輸出。

          dec  = 0x0010,   //10

          oct  = 0x0020,   //8

          hex   = 0x0040, //16

          showbase= 0x0080,  //8進制:0、16進制:0x ,10無。

          showpoint= 0x0100,

          uppercase= 0x0200,

          showpos= 0x0400,

          scientific= 0x0800,

          fixed  = 0x1000,

   unitbuf    = 0x2000,

   stdio      = 0x4000

        };

//x3_1.cpp,指定格式的輸入輸出流的各種控制符的使用
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{

 
         
   int  x=1000;
double y=1.23456789;
cout<<"默認x值:"<<x<<endl;
cout<<"十進制:"<<dec<<x<<endl; //dec oct hex 會一直作用。
cout<<"八進制:"<<oct<<x<<endl;
cout<<"十六進制:"<<hex<<x<<endl;
cout<<"十六進制(大寫字母):"<<hex<<uppercase<<x<<endl<<endl;
cout<<"默認y值(左對齊且有效數字位數為6):"<<y<<endl;
cout<<"寬度為10並右對齊:"<<setw(10)<<right<<y<<endl;
cout<<"寬度為8:"<<setw(8)<<y<<endl;
cout<<"寬度為4:"<<setw(4)<<y<<endl;
cout<<"用*號填充空位(10位寬度):"<<setfill('*')<<setw(10)<<y<<endl; //setw(int i) 只對緊隨的數據顯示有影響。控制多個數據要多個setw()method.
cout<<"設精度為3輸出y(不包括小數點):"<<setprecision(3)<<y<<endl; //setprecision(int i) 會一直作用
cout<<"設精度為8輸出y(不包括小數點):"<<setprecision(8)<<y<<endl;
cout<<"顯示正負號:"<<showpos<<y<<endl;
cout<<"用科學計數法表示y:"<<scientific<<y<<endl;
cout<<"用科學計數法表示y(控制E前數據的小數點后位數):"<<scientific
<<setprecision(3)<<y<<endl;
}

 

成 員 函 數

含    義

long setf(long _f);

根據參數_f設置相應的格式化標志,返回當前的設置

long setf(long _l,long _f);

取消_l的設置,根據_f設置格式化標志,返回當前的設置

long unsetf(long _f);

根據參數_f取消相應的格式化標志,返回當前的設置

long flags(long _f);

根據參數_f重新設置相應的格式化標志,返回當前的設置

long flags() const;

返回當前用於I/O流控制的格式化標志設置

int width(int w);

設置下一個數值的輸出域寬為w,返回為輸出上一個數值所設置的域寬

int width() const;

返回當前的輸出域寬

char fill(char c);

設置流中用於輸出數據的填充字符為c,返回此前設置的填充字符。系統預設置的填充字符為空格

char fill() const;

返回當前使用的填充字符

int precision(int n);

設置浮點數的輸出精度為n,返回此前設置的輸出精度。系統預設置的輸出精度為6

int precision() const;

返回浮點數輸出精度,即輸出的有效數字的位數

 

文件流類:

文件流類包括:文件輸入流類ifstream、文件輸出流類ofstream和文件輸入/輸出流類fstream。相應地,在打開文件之間,要先創建ifstream、ofstream或fstream類的流對象。 

 

定義后打開:void open(const char *filename, int mode,int prot=filebuf::openprot);

定義時打開:文件流類名 文件流對象名(const char *filename, int mode, int prot=filebuf::openprot);

枚 舉 常 量

含    義

ios::in

打開文件進行讀操作

ios::out

打開文件進行寫操作

ios::ate

打開文件時文件指針定位到文件尾

ios::app

添加模式,所有增加都在文件尾部進行

ios::trunc

如果文件已存在則清空原文件

ios::binary

二進制文件(非文本文件)

 在文件打開操作函數的參數里,文件路徑分隔符必須寫成'\\'。如果是多層路徑,每個隔符都必須使用雙反斜線。

(3)prot:文件的訪問方式,取值為:

  0:普通文件

  1:只讀文件

  2:隱含文件

  3:系統文件

  默認值為0,表示對一個普通文件的訪問。 

字符文件寫入、讀出文件。

寫入到文件:插入運算符“<<”。調用類中的成員函數put()。

讀出到內存:提取運算符“>>”。 調用類中的成員函數get()或get(char&)。成員函數getline(char* buffer, int len, char='\n')。

 

 

二進制寫入 讀出文件:

ofstreamoutput("student.dat",ios::binary);    output.write((char *)&s,sizeof(s));

ifstreaminput("student.dat",ios::binary);        input.read((char *)&s,sizeof(s));

qC++使用的是類型安全的I/O操作,可以對數據流進行錯誤檢測,用戶可根據標志位來判斷操作I/O的成功與失敗。程序員在try塊中放上出錯時產生異常的代碼。try塊后面是一個或幾個catch塊。每個catch塊指定捕獲和處理一種異常,而且每個catch塊包含一個異常處理器(異常處理程序)。
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM