<iomanip>
-Funktionen
get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw
get_money
Extrahiert einen Geldwert aus einem Datenstrom, der das angegebene Format verwendet, und gibt den Wert in einem Parameter zurück.
template <class Money>
T7 get_money(Money& amount, bool use_intl);
Parameter
amount
Der extrahierte Währungswert.
use_intl
Wenn true
, dann verwenden Sie das internationale Format. Der Standardwert ist false
.
Hinweise
Der Manipulator gibt ein Objekt zurück, das sich, wenn es aus dem Stream str
extrahiert wurde, wie ein formatted input function
verhält; dieses ruft die Memberfunktion get
für das zu str
gehörige Gebietsschemafacet money_get
auf, um mithilfe von use_intl
das internationale Format anzugeben. Bei Erfolg speichert der Aufruf den extrahierten Währungswert in amount
. Dann gibt der Manipulator str
zurück.
Money
muss Typ long double
oder eine Instanziierung von basic_string
sein, das die gleichen Parameter und Merkmale wie str
aufweist.
get_time
Extrahiert einen Zeitwert aus einem Datenstrom mithilfe des angegebenen Formats. Gibt den Wert als Zeitstruktur in einem Parameter zurück.
template <class Elem>
T10 get_time(struct tm *time_ptr, const Elem *time_format);
Parameter
time_ptr
Die Zeit in Form einer Zeitstruktur.
time_format
Das format, das zum Abrufen des Zeitwerts verwendet werden soll.
Hinweise
Der Manipulator gibt ein Objekt zurück, das sich, wenn es aus dem Stream str
extrahiert wurde, wie eine formatted input function
verhält; diese ruft die Memberfunktion get
für das zu str
gehörige Gebietsschemafacet time_get
auf, um mithilfe von tptr
die Zeitstruktur und mithilfe von fmt
den Anfang der mit NULL endenden Formatzeichenfolgen anzugeben. Bei Erfolg speichert der Aufruf den zu jedem extrahierten Zeitfeld gehörigen Wert in der Zeitstruktur. Dann gibt der Manipulator str
zurück.
Beispiel
#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
Fügt einen Geldbetrag mithilfe des angegebenen Formats in einen Datenstrom ein.
template <class Money>
T8 put_money(const Money& amount, bool use_intl);
Parameter
amount
Der Währungswert, der in den Stream eingefügt werden soll.
use_intl
Legen Sie fest true
, ob der Manipulator ein internationales Format verwenden soll, false
wenn dies nicht der Gewünschte ist.
Rückgabewert
Gibt str
zurück.
Hinweise
Der Manipulator gibt ein Objekt zurück, das sich, wenn es in den Stream str
eingefügt wurde, wie eine formatierte Ausgabefunktion verhält; diese ruft die Memberfunktion put
für das zu str
gehörige Gebietsschemafacet money_put
auf. Bei erfolgreicher Ausführung fügt amount
der Aufruf entsprechend formatiert ein, wobei use_intl verwendet wird, um internationales Format und str.fill()
als Füllelement anzugeben. Dann gibt der Manipulator str
zurück.
Money
muss Typ long double
oder eine Instanziierung von basic_string
sein, das die gleichen Parameter und Merkmale wie str
aufweist.
put_time
Schreibt einen Zeitwert mithilfe eines angegebenen Formats von einer Zeitstruktur in einen Stream.
template <class Elem>
T10 put_time(struct tm* time_ptr, const Elem* time_format);
Parameter
time_ptr
Der Zeitwert aus einer Zeitstruktur, der in den Stream geschrieben werden soll.
time_format
Das Format zum Schreiben des Zeitwerts.
Hinweise
Der Manipulator gibt ein Objekt zurück, das sich, wenn es in den Stream str
eingefügt wird, wie eine formatted output function
verhält. Die Ausgabefunktion ruft für das zu str
gehörige Gebietsschema time_put
die Memberfunktion put
auf. Die Ausgabefunktion verwendet time_ptr
, um die Zeitstruktur anzugeben und time_format
den Anfang einer null-beendeten Formatzeichenfolge anzugeben. Bei Erfolg fügt der Aufruf normalen Text aus der Formatzeichenfolge und konvertierte Werte aus der Zeitstruktur ein. Dann gibt der Manipulator str
zurück.
quoted
(Neu in C++14) Ein iostream
Manipulator, der das bequeme Roundtripping von Zeichenfolgen in und aus Datenströmen mithilfe der >>
Operatoren <<
ermöglicht.
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
Parameter
str
A std::string
, , char*
string literal oder raw string literal, or a wide version of any of these (for example, std::wstring
, wchar_t*
).
delimiter
Ein benutzerdefiniertes Zeichen oder Breitzeichen, das als Trennzeichen für den Anfang und das Ende der Zeichenfolge verwendet wird.
escape
Ein benutzerdefiniertes Zeichen oder Breitzeichen, das als Escapezeichen für Escapesequenzen in der Zeichenfolge verwendet wird.
Hinweise
Siehe auch Verwenden von Einfügeoperatoren und Festlegen des Formats.
Beispiele
Dieses Beispiel zeigt, wie Sie quoted
mit dem standardmäßigen Trennzeichen und Escapezeichen mit schmalen Zeichenfolgen verwenden. Breite Zeichenfolgen werden ebenso unterstützt.
#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
*/
Das folgende Beispiel zeigt, wie Sie ein benutzerdefiniertes Trennzeichen oder Escapezeichen bereitstellen:
#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
Löscht die angegebenen Flags.
T1 resetiosflags(ios_base::fmtflags mask);
Parameter
mask
Die zu löschenden Flags.
Rückgabewert
Der Manipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird, aufruft str.setf(ios_base::fmtflags, mask)
und dann zurückgibt str
, siehe setf
und fmtflags
.
Beispiel
Unter setw
finden Sie ein Beispiel für die Verwendung von resetiosflags
.
setbase
Legt die Basis für Ganzzahlen fest.
T3 setbase(int base);
Parameter
base
Die Zahlenbasis.
Rückgabewert
Der Manipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird, aufruft str.setf(mask, ios_base::basefield)
und dann zurückgibt str
, siehe ios_base::basefield
. mask
Hier wird wie folgt bestimmt:
Wenn
base
8 ist, dannmask
istios_base::oct
.Wenn
base
10 ist, ist die Maskeios_base::dec
.Wenn
base
16, dannmask
istios_base::hex
.Wenn
base
es sich um einen anderen Wert handelt, lautetios_base::fmtflags(0)
die Maske ".
Beispiel
Unter setw
finden Sie ein Beispiel für die Verwendung von setbase
.
setfill
Legt das zum Auffüllen in einer rechts ausgerichteten Anzeige verwendete Zeichen fest.
template <class Elem>
T4 setfill(Elem Ch);
Parameter
Ch
Das zum Auffüllen in einer rechts ausgerichteten Anzeige verwendete Zeichen.
Rückgabewert
Der Vorlagenmanipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird, aufruft str.fill(Ch)
und dann zurückgibt str
. Der Typ Elem
muss mit dem Elementtyp für den Datenstrom str
identisch sein.
Beispiel
Unter setw
finden Sie ein Beispiel für die Verwendung von setfill
.
setiosflags
Legt die angegebenen Flags fest.
T2 setiosflags(ios_base::fmtflags mask);
Parameter
mask
Die festzulegenden Flags.
Rückgabewert
Der Manipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird, aufruft str.setf(mask)
und dann zurückgibt str
, siehe setf
.
Beispiel
Unter setw
finden Sie ein Beispiel für die Verwendung von setiosflags
.
setprecision
Legt die Genauigkeit für Gleitkommawerte fest.
T5 setprecision(streamsize Prec);
Parameter
Prec
Die Genauigkeit für Gleitkommawerte.
Rückgabewert
Der Manipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird, aufruft str.precision(Prec)
und dann zurückgibt str
, siehe precision
.
Beispiel
Unter setw
finden Sie ein Beispiel für die Verwendung von setprecision
.
setw
Gibt die Breite des Anzeigefelds für das nächste Element im Stream an.
T6 setw(streamsize Wide);
Parameter
Wide
Die Breite des Anzeigefelds.
Rückgabewert
Der Manipulator gibt ein Objekt zurück, das, wenn er aus dem Datenstrom extrahiert oder in den Datenstrom str
eingefügt wird str.width(Wide)
, dann zurückgegeben wird str
. Weitere Informationen finden Sie unter width
.
Hinweise
setw
legt die Breite nur für das nächste Element im Datenstrom fest und muss vor jedem Element eingefügt werden, dessen Breite Sie angeben möchten.
Beispiel
// 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