cout格式化輸出 詳解


//在使用setf等庫函數時使用
//在使用流操縱算子時使用
//using namespace std;
//以下所有的setf()都有對應的unsetf()用於取消設置
//所有的setiosflags()可以用resetiosflags()取消
//標志位fmtflags的命名空間可以使用ios_base::或者ios:: int laneri = 12345; double lanerd = 56789;
//1、設置整數進制輸出
//重載1:fmtflags ios_base::setf(fmtflags _Mask);
//重載2:fmtflags ios_base::setf(fmtflags _Mask, fmtflags _Unset);
//使用重載1的時候,一定要先取消當前基,之后才可以設置新的基
//使用重載2的時候,第二個參數設為當前的基,或者當不知道當前基時,設為ios_base::basefield清除當前的
//所有可能的基
//可使用的標志:ios::dec, ios::oct, ios::hex, ios::basefield(= dec|oct|hex)
cout.unsetf(ios::dec);   //等價1 cout.setf(ios::hex);
cout.setf(ios::hex, ios_base::basefield); //等價2 cout<<laneri<<endl;
cout<<setiosflags(ios::hex)<<laneri<<endl; //等價3 cout<<std::hex<<laneri<<endl;   //等價4
//使用輸入輸出操縱符也能有等價效果(命名空間使用std::,否則會有多余的字符),注意這種方法其實不止對
//本句生效
//2、 顯示進制前導字符(0、0x) cout.setf(ios::showbase);
cout<<setiosflags(ios::showbase)<<laneri<<endl; cout<<std::showbase<<laneri<<endl;
//3、使用科學記數法
//只對數據類型為小數的變量有效(或者字面值是小數) //對precision有影響(詳見precision的說明)
//對ios::fixed有影響(詳見fixed的說明),但不會被fixed影響 cout.setf(ios::scientific); cout<<lanerd<<endl;
cout<<setiosflags(ios::scientific)<<lanerd<<endl; cout<<std::scientific<<lanerd<<endl;
 
 
//4、設置小數的浮點/定點顯示方式
//主要依靠precision體現(詳見precision的說明)
//當設置了ios::scientific標志時,ios::fixed會受到影響,std::fixed不會
cout.setf(ios::fixed);  cout<<lanerd<<endl;
cout<<setiosflags(ios::fixed)<<lanerd<<endl;  cout<<std::fixed<<lanerd<<endl;
//5、設置小數數據類型的顯示精度,受到scientific和fixed的影響 //當設置(fixed | scientific)時,precision(n)表示小數點后固定顯示n位小數
//當不設置(fixed & scientific)時,precision(n)表示固定顯示n位數字 // 其中,當是整數且位數m小於n,而又沒有設置showpoint的時候,只顯示m位整數。例如:precision(3),12->12
// 其中,當是整數且位數p大於n,無論設置showpoint與否,都四舍五入后使用科學計數法。例如:precision(3),1234->1.23e+003 cout.precision(3); cout<<lanerd<<endl;
cout<<setprecision(3)<<3.1415926<<endl;
//6、強制浮點數類型變量的小數點顯示 
//如果是整數,大於precision寬度時使用科學計數法,小於precision則小數點后面補0,等於precision時顯示
//小數點但無小數 
//例:不設fixed,precision(6):
1234567->1.23457E+006;   12345->12345.0;    123456->123456. 
//  設fixed,precision(6):
1234567->1234567.000000; 12345->12345.000000; 123456->123456.000000 cout.setf(ios::showpoint);
cout<<setiosflags(ios::showpoint)<<lanerd<<endl; cout<<std::showpoint<<lanerd<<endl;
//7、設置屏幕上的最小顯示寬度
//實際字符數大於等於這個數字,顯示全部;小於這個數字,用fill()設置的字符來填充其他占位符
//注意:寬度設置只對下一個"<<"輸出有效 
//例如:cout<<setw(10)<<right<<"laner"<<"linke";只有"laner"是占10個字符,linke不是 cout.width(12);
//cout<<setw(12)<<3.14<<endl;
//8、顯示對齊方式,默認為左對齊 cout.setf(ios::right);
cout<<setiosflags(ios::right)<<laneri<<endl;
cout<<std::right<<6.28<<endl;
//9、設置不足顯示寬度時的填充字符,默認為' ' cout.fill('*');
cout<<setfill('$')<<laneri<<endl;
===================================================================== //附:ios_base::fmtflags
=====================================================================


免責聲明!

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



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