<iomanip>
, funkcje
get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw
get_money
Wyodrębnia wartość pieniężną ze strumienia przy użyciu określonego formatu i zwraca wartość w parametrze.
template <class Money>
T7 get_money(Money& amount, bool use_intl);
Parametry
amount
Wyodrębniona wartość pieniężna.
use_intl
Jeśli true
, użyj formatu międzynarodowego. Domyślna wartość to false
.
Uwagi
Manipulator zwraca obiekt, który po wyodrębnieniu ze strumienia str
zachowuje się jako element formatted input function
wywołujący funkcję get
składową dla aspektu money_get
ustawień regionalnych skojarzonych z elementem str
, przy użyciu polecenia use_intl
, aby wskazać format międzynarodowy. Jeśli operacja powiedzie się, wywołanie przechowuje w amount
wyodrębnionej wartości pieniężnej. Następnie manipulator zwraca wartość str
.
Money
musi mieć typ long double
lub wystąpienie basic_string
elementu o tych samych parametrach elementów i cech co str
.
get_time
Wyodrębnia wartość godziny ze strumienia przy użyciu określonego formatu. Zwraca wartość w parametrze jako strukturę czasu.
template <class Elem>
T10 get_time(struct tm *time_ptr, const Elem *time_format);
Parametry
time_ptr
Czas w postaci struktury czasu.
time_format
Format używany do pobierania wartości czasu.
Uwagi
Manipulator zwraca obiekt, który po wyodrębnieniu ze strumienia str
zachowuje się jako element formatted input function
wywołujący funkcję get
składową dla aspektu time_get
ustawień regionalnych skojarzonych z elementem str
, przy użyciu polecenia tptr
, aby wskazać strukturę czasu i fmt
wskazać początek ciągu formatu zakończonego wartością null. Jeśli operacja powiedzie się, wywołanie przechowuje w strukturze czasu wartości skojarzone z dowolnymi wyodrębnionym polami czasu. Następnie manipulator zwraca wartość str
.
Przykład
#include <ctime>
#include <iomanip>
#include <iostream>
int main()
{
std::cout << "Enter a time, for example 15:24 for 3:24pm: ";
struct std::tm when;
std::cin >> std::get_time(&when, "%R");
if (!std::cin.fail())
{
std::cout << "Entered: " << when.tm_hour << " hours, " << when.tm_min << " minutes\n";
}
return (int)std::cin.fail();
}
put_money
Wstawia kwotę pieniężną przy użyciu określonego formatu do strumienia.
template <class Money>
T8 put_money(const Money& amount, bool use_intl);
Parametry
amount
Kwota pieniężna do wstawienia do strumienia.
use_intl
Ustaw wartość na true
, jeśli manipulator powinien używać formatu międzynarodowego, false
jeśli nie powinien.
Wartość zwracana
Zwraca wartość str
.
Uwagi
Manipulator zwraca obiekt, który po wstawieniu do strumienia str
zachowuje się jako sformatowana funkcja wyjściowa, która wywołuje funkcję put
składową dla aspektu money_put
ustawień regionalnych skojarzonych z str
. Jeśli operacja powiedzie się, wywołanie wstawia amount
odpowiednio sformatowane, używając use_intl do wskazania formatu międzynarodowego i str.fill()
, jako elementu wypełnienia. Następnie manipulator zwraca wartość str
.
Money
musi mieć typ long double
lub wystąpienie basic_string
elementu o tych samych parametrach elementów i cech co str
.
put_time
Zapisuje wartość czasu ze struktury czasu do strumienia przy użyciu określonego formatu.
template <class Elem>
T10 put_time(struct tm* time_ptr, const Elem* time_format);
Parametry
time_ptr
Wartość czasu zapisu w strumieniu podana w strukturze czasu.
time_format
Format zapisu wartości czasu.
Uwagi
Manipulator zwraca obiekt, który po wstawieniu do strumienia str
zachowuje się jako formatted output function
. Funkcja wyjściowa wywołuje funkcję put
składową dla aspektu time_put
ustawień regionalnych skojarzonych z elementem str
. Funkcja wyjściowa używa time_ptr
metody , aby wskazać strukturę czasu i time_format
wskazać początek ciągu formatu zakończonego wartością null. Jeśli operacja powiedzie się, wywołanie wstawia tekst literału z ciągu formatu i konwertuje wartości ze struktury czasu. Następnie manipulator zwraca wartość str
.
quoted
(Nowość w języku C++14) Manipulator iostream
, który umożliwia wygodne zaokrąglanie ciągów do i z strumieni przy użyciu >>
operatorów i <<
.
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
Parametry
str
std::string
Literał ciągu , char*
lub nieprzetworzone literał ciągu lub szeroka wersja dowolnej z nich (na przykład std::wstring
, wchar_t*
).
delimiter
Znak określony przez użytkownika lub znak szeroki do użycia jako ogranicznik dla początku i końca ciągu.
escape
Znak określony przez użytkownika lub znak szeroki do użycia jako znak ucieczki dla sekwencji ucieczki w ciągu.
Uwagi
Przykłady
W tym przykładzie pokazano, jak używać quoted
z domyślnym ogranicznikiem i znakiem ucieczki przy użyciu wąskich ciągów. Szerokie ciągi są równie obsługiwane.
#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;
}
int 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
*/
W poniższym przykładzie pokazano, jak podać niestandardowy ogranicznik lub znak ucieczki:
#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.
}
int 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
Czyści określone flagi.
T1 resetiosflags(ios_base::fmtflags mask);
Parametry
mask
Flagi do wyczyszczenia.
Wartość zwracana
Manipulator zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
wywołuje metodę , str.setf(ios_base::fmtflags, mask)
a następnie zwraca str
element , zobacz setf
i fmtflags
.
Przykład
Zobacz setw
przykład użycia elementu resetiosflags
.
setbase
Ustaw bazę dla liczb całkowitych.
T3 setbase(int base);
Parametry
base
Podstawa liczbowa.
Wartość zwracana
Manipulator zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
str.setf(mask, ios_base::basefield)
wywołuje metodę , a następnie zwraca str
element , zobacz ios_base::basefield
. mask
W tym miejscu jest określany w następujący sposób:
Jeśli
base
ma wartość 8, wartośćmask
toios_base::oct
.Jeśli
base
ma wartość 10, maska toios_base::dec
.Jeśli
base
ma wartość 16, wartośćmask
toios_base::hex
.Jeśli
base
jest jakakolwiek inna wartość, maska toios_base::fmtflags(0)
".
Przykład
Zobacz setw
przykład użycia elementu setbase
.
setfill
Ustawia znak, który będzie używany do wypełniania spacji na ekranie uzasadnionym prawem.
template <class Elem>
T4 setfill(Elem Ch);
Parametry
Ch
Znak, który będzie używany do wypełniania spacji na ekranie uzasadnionym prawem.
Wartość zwracana
Manipulator szablonu zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
wywołuje str.fill(Ch)
metodę , a następnie zwraca wartość str
. Typ Elem
musi być taki sam jak typ elementu dla strumienia str
.
Przykład
Zobacz setw
przykład użycia elementu setfill
.
setiosflags
Ustawia określone flagi.
T2 setiosflags(ios_base::fmtflags mask);
Parametry
mask
Flagi do ustawienia.
Wartość zwracana
Manipulator zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
str.setf(mask)
wywołuje metodę , a następnie zwraca str
element , zobacz setf
.
Przykład
Zobacz setw
przykład użycia elementu setiosflags
.
setprecision
Ustawia precyzję wartości zmiennoprzecinkowych.
T5 setprecision(streamsize Prec);
Parametry
Prec
Precyzja wartości zmiennoprzecinkowych.
Wartość zwracana
Manipulator zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
str.precision(Prec)
wywołuje metodę , a następnie zwraca str
element , zobacz precision
.
Przykład
Zobacz setw
przykład użycia elementu setprecision
.
setw
Określa szerokość pola wyświetlania dla następnego elementu w strumieniu.
T6 setw(streamsize Wide);
Parametry
Wide
Szerokość pola wyświetlania.
Wartość zwracana
Manipulator zwraca obiekt, który po wyodrębnieniu lub wstawieniu do strumienia str
wywołuje str.width(Wide)
metodę , a następnie zwraca wartość str
. Aby uzyskać więcej informacji, zobacz width
.
Uwagi
setw
Ustawia szerokość tylko dla następnego elementu w strumieniu i musi zostać wstawiony przed każdym elementem, którego szerokość chcesz określić.
Przykład
// 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