C++ 語言下
標頭檔:#include <iomanip>
說明:是I/O流量控制標頭檔,就像C裡面的格式化輸出一樣
控 制 符 |
作 用 |
dec |
設定整數為十進位 |
hex |
設定整數為十六進位 |
oct |
設定整數為八進位 |
setbase(n) |
設定整數為n進位(n=8,10,16) |
setfill(n) |
設定輸入鍵台,c可以是字元常或字元變數 |
setprecision(n) |
設定浮點數的有效數字為n位 |
setw(n) |
設定欄位寬度為n位 |
setiosflags(ios::fixed) |
設定浮點數以固定的小數位元顯示 |
setiosflags(ios::scientific) |
設定浮點數以科學計數法表示 |
setiosflags(ios::left) |
輸出靠左對齊 |
setiosflags(ios::right) |
輸出靠右對齊 |
setiosflags(ios::skipws) |
忽略前置空格 |
setiosflags(ios::uppercase) |
在以科學計數法輸出E與十六進位輸出X以大寫輸出,否則小寫。 |
setiosflags(ios::showpos) |
輸出正數時顯示"+"號 |
setiosflags(ios::showpoint) |
強制顯示小數點 |
resetiosflags() |
終止已經設定的輸出格式狀態,在括弧中應指定內容 |
在此需要說一下,有效位元預設是6位,即setprecision(6),即小數點前面和小數點後面加起來的位元為6個有效數字(注意會四捨五入)。
另外,科學計數法輸出E與十六進位輸出預設是以小寫,要換成大寫需添加uppercase
而setw(n)設定寬度,若是實際寬度大於被設定的,則setw函數此時失效。
以下是測試程式:
#include <iostream><br />#include <iomanip><br />using namespace std ;<br />int main()<br />{<br />double PI=3.141592654;<br />cout<<PI<<endl;<br />cout<<setprecision(2)<<PI<<endl;<br />cout<<fixed<<setprecision(2)<<PI<<endl;<br />cout<<setfill('*')<<setw(20)<<setprecision(10)<<PI<<endl;<br />cout<<setfill('*')<<setw(20)<<setprecision(10)<<left<<PI<<endl;<br />cout<<scientific<<setprecision(10)<<PI<<endl;<br />cout<<scientific<<uppercase<<setprecision(10)<<PI<<endl;<br /> return 0 ;<br />}
結果如下:
相關課件,更多的內容在課件裡面,收集於網路:下載一
以下是<iomanip>標頭檔的聲明:
// iomanip standard header<br />#pragma once<br />#ifndef _IOMANIP_<br />#define _IOMANIP_<br />#ifndef RC_INVOKED<br />#include <istream><br />#ifdef _MSC_VER<br /> #pragma pack(push,_CRT_PACKING)<br /> #pragma warning(push,3)<br />#endif /* _MSC_VER */<br />_STD_BEGIN<br />// TEMPLATE STRUCT _Fillobj<br />template<class _Elem><br />struct _Fillobj<br />{// store fill character<br />_Fillobj(_Elem _Ch)<br />: _Fill(_Ch)<br />{// construct from fill character<br />}<br />_Elem _Fill;// the fill character<br />};<br />// TEMPLATE FUNCTION setfill<br />template<class _Elem> inline<br />_Fillobj<_Elem> __CLRCALL_OR_CDECL setfill(_Elem _Ch)<br />{// return a _Fillobj manipulator<br />return (_Fillobj<_Elem>(_Ch));<br />}<br />template<class _Elem,<br />class _Traits> inline<br />basic_istream<_Elem, _Traits>&<br />__CLRCALL_OR_CDECL operator>>(basic_istream<_Elem, _Traits>& _Istr,<br />const _Fillobj<_Elem>& _Manip)<br />{// set fill character in input stream<br />_Istr.fill(_Manip._Fill);<br />return (_Istr);<br />}<br />template<class _Elem,<br />class _Traits> inline<br />basic_ostream<_Elem, _Traits>&<br />__CLRCALL_OR_CDECL operator<<(basic_ostream<_Elem, _Traits>& _Ostr,<br />const _Fillobj<_Elem>& _Manip)<br />{// set fill character in output stream<br />_Ostr.fill(_Manip._Fill);<br />return (_Ostr);<br />}<br />// TEMPLATE STRUCT _Smanip<br />template<class _Arg><br />struct _Smanip<br />{// store function pointer and argument value<br />_Smanip(void (__cdecl *_Left)(ios_base&, _Arg), _Arg _Val)<br />: _Pfun(_Left), _Manarg(_Val)<br />{// construct from function pointer and argument value<br />}<br />void (__cdecl *_Pfun)(ios_base&, _Arg);// the function pointer<br />_Arg _Manarg;// the argument value<br />};<br />template<class _Elem,<br />class _Traits,<br />class _Arg> inline<br />basic_istream<_Elem, _Traits>& __CLRCALL_OR_CDECL operator>>(<br />basic_istream<_Elem, _Traits>& _Istr, const _Smanip<_Arg>& _Manip)<br />{// extract by calling function with input stream and argument<br />(*_Manip._Pfun)(_Istr, _Manip._Manarg);<br />return (_Istr);<br />}<br />template<class _Elem,<br />class _Traits,<br />class _Arg> inline<br />basic_ostream<_Elem, _Traits>& __CLRCALL_OR_CDECL operator<<(<br />basic_ostream<_Elem, _Traits>& _Ostr, const _Smanip<_Arg>& _Manip)<br />{// insert by calling function with output stream and argument<br />(*_Manip._Pfun)(_Ostr, _Manip._Manarg);<br />return (_Ostr);<br />}<br />// INSTANTIATIONS<br />_MRTIMP2 _Smanip<ios_base::fmtflags> __cdecl resetiosflags(ios_base::fmtflags);<br />_MRTIMP2 _Smanip<ios_base::fmtflags> __cdecl setiosflags(ios_base::fmtflags);<br />_MRTIMP2 _Smanip<int> __cdecl setbase(int);<br />_MRTIMP2 _Smanip<streamsize> __cdecl setprecision(streamsize);<br />_MRTIMP2 _Smanip<streamsize> __cdecl setw(streamsize);<br />_STD_END<br />#ifdef _MSC_VER<br /> #pragma warning(pop)<br /> #pragma pack(pop)<br />#endif /* _MSC_VER */<br />#endif /* RC_INVOKED */<br />#endif /* _IOMANIP_ */<br />/*<br /> * Copyright (c) 1992-2006 by P.J. Plauger. ALL RIGHTS RESERVED.<br /> * Consult your license regarding permissions and restrictions.<br /> V5.02:0009 */<br />