<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_get
聯str
,並使用_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_get
聯str
,並使用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_put
聯str
。 如果成功,此呼叫會插入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_put
聯str
。 輸出函式會使用_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,呼叫str。 setf( ios_base::
fmtflags, _ Mask), and then returns str.
範例
請參閱setw的使用範例resetiosflags
。
setbase
設定整數的基底。
T3 setbase(int _Base);
參數
_Base
數字基底。
傳回值
操作工具時傳回物件,從擷取或插入至資料流str,呼叫str。 setf
(遮罩, 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,呼叫str。 setf(_遮罩),然後傳回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