共用方式為


<iomanip>函式</iomanip>

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

<iomanip> get_money <iomanip> get_time <iomanip> put_money
<iomanip> put_time 引號 resetiosflags
setbase setfill setiosflags
setprecision setw

<iomanip> get_money

從使用所需的格式,資料流擷取貨幣值,並在參數中傳回的值。

template <class Money>  
T7 get_money(
    Money& _Amount,   
    bool _Intl);

參數

_Amount
所擷取的貨幣值。

_Intl
如果true,使用國際格式。 預設值是 false

備註

操作工具傳回的物件,當資料流擷取str的行為就像formatted input function呼叫成員函式get的地區設定 facetmoney_getstr,並使用_Intl表示國際格式。 如果成功,此呼叫會存放在_Amount所擷取的貨幣值。 操作工具則會傳回str

Money必須是型別long double或具現化的basic_string具有相同的項目和特性參數做為str

<iomanip> get_time

從使用所需的格式資料流擷取時間值。 在參數中傳回的值,做為時間結構。

template <class Elem>  
T10 put_time(
    struct tm *_Tptr,   
    const Elem *_Fmt);

參數

_Tptr
時間結構的表單中的時間。

_Fmt
用來取得時間值所要的格式。

備註

操作工具傳回的物件,當擷取自資料流str的行為就像formatted input function呼叫成員函式get地區設定 facettime_getstr,並使用tptr來表示時間結構和fmt來表示 null 結尾的格式字串的開頭。 如果成功,呼叫儲存時間結構中的值與任何已解壓縮的時間欄位相關聯。 操作工具則會傳回str

<iomanip> put_money

插入到資料流使用所需的格式的金額。

template <class Money>  
T8 put_money(
    const Money& _Amount,   
    bool _Intl);

參數

_Amount
若要插入之資料流金額。

_Intl
設定為true如果操作工具應該使用國際格式,false若不是。

傳回值

傳回 str

備註

操作工具傳回的物件,當插入至資料流str,做為呼叫成員函式的格式化的輸出函式的行為put地區設定 facetmoney_putstr。 如果成功,此呼叫會插入amount適當格式化,使用_Intl表示國際格式和str.fill(),為填滿的項目。 操作工具則會傳回str

Money必須是型別long double或具現化的basic_string具有相同的項目和特性參數做為str

<iomanip> put_time

使用指定的格式,將時間值從時間結構寫入至資料流。

template <class Elem>  
T10 put_time(
    struct tm* _Tptr,   
    const Elem* _Fmt);

參數

_Tptr
要寫入資料流,時間結構中所提供的時間值。

_Fmt
要寫入的時間值所需的格式。

備註

操作工具傳回的物件,當插入至資料流str的行為就像formatted output function。 輸出函式呼叫成員函式put的地區設定 facettime_putstr。 輸出函式會使用_Tptr來表示時間結構和_Fmt表示 NUL 終止格式字串的開頭。 如果成功,此呼叫將插入常值文字格式字串和從時間結構的轉換的值。 操作工具則會傳回str

引號

(在 C + +&14; 中新增) Iostream 操作工具,可讓方便的反覆存取字串傳入與傳出資料流使用 >> 和< operators.></ operators.>

quoted(std::string str) // or wstring  
quoted(const char* str) //or wchar_t* 
quoted(std::string str,
    char delimiter,
    char escape) // or wide versions  
quoted(const char* str,
    char delimiter,
    char escape) // or wide versions  

參數

str
Std:: string、 char *、 字串常值或原始字串常值或其中任何的廣泛版本 (例如 std:: wstring、 wchar_t*)。

delimiter
使用者指定的字元或寬字元,用作字串開頭和結尾的分隔符號。

escape
使用者指定的字元或寬字元,用作字串內逸出序列的逸出字元。

備註

請參閱使用插入運算子和控制格式

範例

這個範例將示範如何使用 quoted 與預設分隔符號,及使用縮小字串逸出字元。 同樣支援寬字串。

  
#include <iostream>  
#include <iomanip>  
#include <sstream>  
  
using namespace std;  
  
void show_quoted_v_nonquoted()  
{  
    // Results are identical regardless of input string type:  
    // string inserted { R"(This is a "sentence".)" }; // raw string literal  
    // string inserted { "This is a \"sentence\"." };  // regular string literal  
    const char* inserted = "This is a \"sentence\".";  // const char*  
    stringstream ss, ss_quoted;  
    string extracted, extracted_quoted;  
  
    ss << inserted;  
    ss_quoted << quoted(inserted);  
  
    cout << "ss.str() is storing       : " << ss.str() << endl;  
    cout << "ss_quoted.str() is storing: " << ss_quoted.str() << endl << endl;  
  
    // Round-trip the strings   
    ss >> extracted;  
    ss_quoted >> quoted(extracted_quoted);  
  
    cout << "After round trip: " << endl;  
    cout << "Non-quoted      : " << extracted << endl;  
    cout << "Quoted          : " << extracted_quoted << endl;  
}  
  
void main(int argc, char* argv[])  
{  
    show_quoted_v_nonquoted();  
  
    // Keep console window open in debug mode.  
    cout << endl << "Press Enter to exit" << endl;  
    string input{};  
    getline(cin, input);  
}  
  
/* Output:  
ss.str() is storing       : This is a "sentence".  
ss_quoted.str() is storing: "This is a \"sentence\"."  
  
After round trip:  
Non-quoted      : This  
Quoted          : This is a "sentence".  
  
Press Enter to exit  
*/  

範例

下列範例將示範如何提供分隔符號和/或逸出字元給自訂:

#include <iostream>  
#include <iomanip>  
#include <sstream>  
  
using namespace std;  
  
void show_custom_delimiter()  
{  
    string inserted{ R"("This" "is" "a" "heavily-quoted" "sentence".)" };  
    // string inserted{ "\"This\" \"is\" \"a\" \"heavily-quoted\" \"sentence\"" };  
    // const char* inserted{ "\"This\" \"is\" \"a\" \"heavily-quoted\" \"sentence\"" };  
    stringstream ss, ss_quoted;  
    string extracted;  
  
    ss_quoted << quoted(inserted, '*');  
    ss << inserted;  
    cout << "ss_quoted.str() is storing: " << ss_quoted.str() << endl;  
    cout << "ss.str() is storing       : " << ss.str() << endl << endl;  
  
    // Use the same quoted arguments as on insertion.  
    ss_quoted >> quoted(extracted, '*');  
  
    cout << "After round trip: " << endl;  
    cout << "Quoted          : " << extracted << endl;  
  
    extracted = {};  
    ss >> extracted;  
    cout << "Non-quoted      : " << extracted << endl << endl;  
}  
  
void show_custom_escape()  
{  
    string inserted{ R"(\\root\trunk\branch\nest\egg\yolk)" };  
    // string inserted{ "\\\\root\\trunk\\branch\\nest\\egg\\yolk" };  
    stringstream ss, ss_quoted, ss_quoted_custom;  
    string extracted;  
  
    // Use '"' as delimiter and '~' as escape character.  
    ss_quoted_custom << quoted(inserted, '"', '~');  
    ss_quoted << quoted(inserted);  
    ss << inserted;  
    cout << "ss_quoted_custom.str(): " << ss_quoted_custom.str() << endl;  
    cout << "ss_quoted.str()       : " << ss_quoted.str() << endl;  
    cout << "ss.str()              : " << ss.str() << endl << endl;  
  
    // No spaces in this string, so non-quoted behaves same as quoted  
    // after round-tripping.  
}  
  
void main(int argc, char* argv[])  
{  
    cout << "Custom delimiter:" << endl;  
    show_custom_delimiter();  
    cout << "Custom escape character:" << endl;  
    show_custom_escape();  
  
    // Keep console window open in debug mode.  
    cout << endl << "Press Enter to exit" << endl;  
    string input{};  
    getline(cin, input);  
}  
/* Output:  
Custom delimiter:  
ss_quoted.str() is storing: *"This" "is" "a" "heavily-quoted" "sentence".*  
ss.str() is storing       : "This" "is" "a" "heavily-quoted" "sentence".  
  
After round trip:  
Quoted          : "This" "is" "a" "heavily-quoted" "sentence".  
Non-quoted      : "This"  
  
Custom escape character:  
ss_quoted_custom.str(): "\\root\trunk\branch\nest\egg\yolk"  
ss_quoted.str()       : "\\\\root\\trunk\\branch\\nest\\egg\\yolk"  
ss.str()              : \\root\trunk\branch\nest\egg\yolk  
  
Press Enter to exit  
*/  
  

resetiosflags

清除指定的旗標。

T1 resetiosflags(ios_base::fmtflags _Mask);

參數

_Mask
若要清除旗標。

傳回值

操作工具時傳回物件,從擷取或插入至資料流str,呼叫strsetf( ios_base::fmtflags, _ Mask), and then returns str.

範例

請參閱setw的使用範例resetiosflags

setbase

設定整數的基底。

T3 setbase(int _Base);

參數

_Base
數字基底。

傳回值

操作工具時傳回物件,從擷取或插入至資料流str,呼叫strsetf(遮罩ios_base::basefield),然後傳回str。 在這裡,遮罩決定,如下所示︰

  • If _ Base is 8, then mask is ios_base::oct.

  • 如果 _基底為 10,則遮罩是ios_base:: dec

  • If _ Base is 16, then mask is ios_base::hex.

  • 如果 _基底是任何其他值,則遮罩是ios_base:: fmtflags(0)。

範例

請參閱setw的使用範例setbase

setfill

設定將用來填滿靠右對齊顯示中的空格字元。

template <class Elem>  
T4 setfill(Elem _Ch);

參數

_Ch
將用來填滿靠右對齊顯示中的空格字元。

傳回值

範本操作工具時傳回物件,從擷取或插入至資料流str,呼叫str填滿( _Ch),然後傳回str。 型別Elem必須為資料流的元素型別相同str

範例

請參閱setw的使用範例setfill

setiosflags

設定指定的旗標。

T2 setiosflags(ios_base::fmtflags _Mask);

參數

_Mask
若要設定旗標。

傳回值

操作工具時傳回物件,從擷取或插入至資料流str,呼叫strsetf(_遮罩),然後傳回str

範例

請參閱setw的使用範例setiosflags

setprecision

設定浮點值的有效位數。

T5 setprecision(streamsize _Prec);

參數

_Prec
浮點值的有效位數。

傳回值

操作工具時傳回物件,從擷取或插入至資料流str,呼叫str有效位數( _Prec),然後傳回str

範例

請參閱setw的使用範例setprecision

setw

指定資料流中的下一個項目顯示欄位的寬度。

T6 setw(streamsize _Wide);

參數

_Wide
顯示欄位寬度。

傳回值

操作工具時傳回物件,從擷取或插入至資料流str,呼叫str寬度(_),然後傳回str

備註

setw 設定僅適用於下一個項目寬度以資料流,每個您想要指定其寬度的項目之前,必須插入。

範例

// iomanip_setw.cpp   
// compile with: /EHsc  
// Defines the entry point for the console application.  
//  
// Sample use of the following manipulators:  
//   resetiosflags  
//   setiosflags  
//   setbase  
//   setfill  
//   setprecision  
//   setw  
  
#include <iostream>  
#include <iomanip>  
  
using namespace std;  
  
const double   d1 = 1.23456789;  
const double   d2 = 12.3456789;  
const double   d3 = 123.456789;  
const double   d4 = 1234.56789;  
const double   d5 = 12345.6789;  
const long      l1 = 16;  
const long      l2 = 256;  
const long      l3 = 1024;  
const long      l4 = 4096;  
const long      l5 = 65536;  
int         base = 10;  
  
void DisplayDefault( )  
{  
   cout << endl << "default display" << endl;  
   cout << "d1 = " << d1 << endl;  
   cout << "d2 = " << d2 << endl;  
   cout << "d3 = " << d3 << endl;  
   cout << "d4 = " << d4 << endl;  
   cout << "d5 = " << d5 << endl;  
}  
  
void DisplayWidth( int n )  
{  
   cout << endl << "fixed width display set to " << n << ".\n";  
   cout << "d1 = " << setw(n) << d1 << endl;  
   cout << "d2 = " << setw(n) << d2 << endl;  
   cout << "d3 = " << setw(n) << d3 << endl;  
   cout << "d4 = " << setw(n) << d4 << endl;  
   cout << "d5 = " << setw(n) << d5 << endl;  
}  
  
void DisplayLongs( )  
{  
   cout << setbase(10);  
   cout << endl << "setbase(" << base << ")" << endl;  
   cout << setbase(base);  
   cout << "l1 = " << l1 << endl;  
   cout << "l2 = " << l2 << endl;  
   cout << "l3 = " << l3 << endl;  
   cout << "l4 = " << l4 << endl;  
   cout << "l5 = " << l5 << endl;  
}  
  
int main( int argc, char* argv[] )  
{  
   DisplayDefault( );  
  
   cout << endl << "setprecision(" << 3 << ")" << setprecision(3);  
   DisplayDefault( );  
  
   cout << endl << "setprecision(" << 12 << ")" << setprecision(12);  
   DisplayDefault( );  
  
   cout << setiosflags(ios_base::scientific);  
   cout << endl << "setiosflags(" << ios_base::scientific << ")";  
   DisplayDefault( );  
  
   cout << resetiosflags(ios_base::scientific);  
   cout << endl << "resetiosflags(" << ios_base::scientific << ")";  
   DisplayDefault( );  
  
   cout << endl << "setfill('" << 'S' << "')" << setfill('S');  
   DisplayWidth(15);  
   DisplayDefault( );  
  
   cout << endl << "setfill('" << ' ' << "')" << setfill(' ');  
   DisplayWidth(15);  
   DisplayDefault( );  
  
   cout << endl << "setprecision(" << 8 << ")" << setprecision(8);  
   DisplayWidth(10);  
   DisplayDefault( );  
  
   base = 16;  
   DisplayLongs( );  
  
   base = 8;  
   DisplayLongs( );  
  
   base = 10;  
   DisplayLongs( );  
  
   return   0;  
}  
  
default display  
d1 = 1.23457  
d2 = 12.3457  
d3 = 123.457  
d4 = 1234.57  
d5 = 12345.7  
  
setprecision(3)  
default display  
d1 = 1.23  
d2 = 12.3  
d3 = 123  
d4 = 1.23e+003  
d5 = 1.23e+004  
  
setprecision(12)  
default display  
d1 = 1.23456789  
d2 = 12.3456789  
d3 = 123.456789  
d4 = 1234.56789  
d5 = 12345.6789  
  
setiosflags(4096)  
default display  
d1 = 1.234567890000e+000  
d2 = 1.234567890000e+001  
d3 = 1.234567890000e+002  
d4 = 1.234567890000e+003  
d5 = 1.234567890000e+004  
  
resetiosflags(4096)  
default display  
d1 = 1.23456789  
d2 = 12.3456789  
d3 = 123.456789  
d4 = 1234.56789  
d5 = 12345.6789  
  
setfill('S')  
fixed width display set to 15.  
d1 = SSSSS1.23456789  
d2 = SSSSS12.3456789  
d3 = SSSSS123.456789  
d4 = SSSSS1234.56789  
d5 = SSSSS12345.6789  
  
default display  
d1 = 1.23456789  
d2 = 12.3456789  
d3 = 123.456789  
d4 = 1234.56789  
d5 = 12345.6789  
  
setfill(' ')  
fixed width display set to 15.  
d1 =      1.23456789  
d2 =      12.3456789  
d3 =      123.456789  
d4 =      1234.56789  
d5 =      12345.6789  
  
default display  
d1 = 1.23456789  
d2 = 12.3456789  
d3 = 123.456789  
d4 = 1234.56789  
d5 = 12345.6789  
  
setprecision(8)  
fixed width display set to 10.  
d1 =  1.2345679  
d2 =  12.345679  
d3 =  123.45679  
d4 =  1234.5679  
d5 =  12345.679  
  
default display  
d1 = 1.2345679  
d2 = 12.345679  
d3 = 123.45679  
d4 = 1234.5679  
d5 = 12345.679  
  
setbase(16)  
l1 = 10  
l2 = 100  
l3 = 400  
l4 = 1000  
l5 = 10000  
  
setbase(8)  
l1 = 20  
l2 = 400  
l3 = 2000  
l4 = 10000  
l5 = 200000  
  
setbase(10)  
l1 = 16  
l2 = 256  
l3 = 1024  
l4 = 4096  
l5 = 65536  

另請參閱

<>>