//using namespace std;
//所有的setiosflags()可以用resetiosflags()取消
//標誌位fmtflags的命名空間可以使用ios_base::或者ios::
double lanerd = 56789;
//重載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<<laneri<<endl;
cout<<setiosflags(ios::hex)<<laneri<<endl; //等價3
cout<<std::hex<<laneri<<endl; //等價4
cout.setf(ios::showbase);
cout<<setiosflags(ios::showbase)<<laneri<<endl;
cout<<std::showbase<<laneri<<endl;
//對precision有影響(詳見precision的說明)
//對ios::fixed有影響(詳見fixed的說明),但不會被fixed影響
cout.setf(ios::scientific);
cout<<lanerd<<endl;
cout<<setiosflags(ios::scientific)<<lanerd<<endl;
cout<<std::scientific<<lanerd<<endl;
//當設定了ios::scientific標誌時,ios::fixed會受到影響,std::fixed不會
cout.setf(ios::fixed);
cout<<lanerd<<endl;
cout<<setiosflags(ios::fixed)<<lanerd<<endl;
cout<<std::fixed<<lanerd<<endl;
//當設定(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;
//如果是整數,大於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;
//注意:寬度設定只對下一個"<<"輸出有效
//例如:cout<<setw(10)<<right<<"laner"<<"linke";只有"laner"是佔10個字元,linke不是
cout.width(12);
cout<<setw(12)<<3.14<<endl;
cout.setf(ios::right);
cout<<setiosflags(ios::right)<<laneri<<endl;
cout<<std::right<<6.28<<endl;
cout.fill('*');
cout<<setfill('$')<<laneri<<endl;