C++ 標準庫之iomanip

來源:互聯網
上載者:User

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 />

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.