C++格式化輸入和輸出
1,ios類中定義的格式控制標志
ios類中定義了一個數據成員:格式控制標志字,long x_flags
x_flags每一位的狀態值用枚舉符號常量定義:如下列出常用幾個
enum{
skipws //跳過輸入空格(skip whitespace)
left //輸出左對齊調整
right //輸出右對齊調整
dec //轉化為十進制(in/out)(decimalism)
oct //轉化為八進制(in/out)(octonary number system)
hex //轉化為十六進制(in/out)(hexadecimal)
showbase //輸出時顯示所有數值的基數,八進制是前邊加0,十六進制是前邊加0x:例如: dec: 255 , cot:0377, hex:0xff
showpoint //輸出時顯示小數點和額外的零,即使不需要
uppercase //大寫十六進制輸出
showpos // 正整數顯示前邊加"+"(show positive sign)
scientific //用科學計數法顯示浮點數
fixed //用正常的計數方法顯示浮點數,與科學計數法相對應
};
2,操作符
操作符:兩類
不帶參數:定義在頭文件 iostream.h
帶參數:定義在頭文件iomanip.h
(1)iostream.h 中的操作符(舉例中num代表變量)
oct //cout<<oct<<num;八進制
cin>>oct<<num;
dec //cout<<dec<<num;十進制
cin>>dec>>num;
hex //cout<<hex<<num;十六進制
ws //cin>>ws;//跳過所有前導空白字符 (whitespace)
endl //cout<<endl 插入換行符並刷新流
ends //cout<<ends,輸出空字符'\0'
flush //cout<<flush 清空流
(2)iomanip.h
setprecision(int) //設置數值精度(四舍五入)cout<<setprecision(5)<<num;
setw(int) //設置域寬度cout<<setw(4)<<num;
setifosflags(long p) //啟用指定為p的標志 cout<<setifosflags(ios::left|ios::dec)//左對齊十進制輸出
resettifosflags(long p) //取消指定為p的標志
其他
precision() 返回當前的浮點數精度值
precision(val) 設置val為新的浮點數精度值, 並返回原值
setf(flags) 添加格式標志flags, 返回所有標志的原本狀態
flags(long p) //啟用指定為p 的標志
示例:
flags()
int inum=255; cout<<"十進制方式"<<inum<<"\t"; cout.flags(ios::oct|ios::showbase); cout<<"八進制方式"<<inum<<"\t"; cout.flags(ios::hex|ios::showbase); cout<<"十六進制方式"<<inum<<endl;
precison()
void fn (float interest,float amount) { cout<<"RMB amount="; cout.precision(2); cout<<amount<<endl; cout<<"\nthe interest="; cout.precision(4); cout<<interest<<endl; } int main () { float f1=29.41560067; float f2=12.567188; fn(f1,f2); return 0; }