fonctions<iomanip>
get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw
get_money
Extrait une valeur monétaire d’un flux à l’aide du format spécifié et retourne la valeur dans un paramètre.
template <class Money>
T7 get_money(Money& amount, bool use_intl);
Paramètres
amount
Valeur monétaire extraite.
use_intl
Si true
, utiliser le format international. La valeur par défaut est false
.
Notes
Le manipulateur retourne un objet qui, quand il est extrait à partir du flux str
, se comporte comme un formatted input function
qui appelle la fonction membre get
pour la facette de paramètres régionaux money_get
associée à str
, en utilisant use_intl
pour indiquer le format international. En cas de réussite, l’appel stocke dans amount
la valeur monétaire extraite. Le manipulateur retourne ensuite str
.
Money
doit être de type long double
ou une instanciation de basic_string
avec le même élément et les mêmes paramètres de caractéristiques que str
.
get_time
Extrait une valeur de temps à partir d’un flux à l’aide du format spécifié. Retourne la valeur dans un paramètre en tant que structure de temps.
template <class Elem>
T10 get_time(struct tm *time_ptr, const Elem *time_format);
Paramètres
time_ptr
Heure sous la forme d’une structure de temps.
time_format
Format à utiliser pour obtenir la valeur de temps.
Notes
Le manipulateur retourne un objet qui, quand il est extrait à partir du flux str
, se comporte comme un formatted input function
qui appelle la fonction membre get
pour la facette de paramètres régionaux time_get
associée à str
, en utilisant tptr
pour indiquer la structure de temps et fmt
pour indiquer le début d’une chaîne de format terminée par un caractère Null. En cas de réussite, l’appel stocke dans la structure de temps les valeurs associées à tous les champs de temps extraits. Le manipulateur retourne ensuite str
.
Exemple
#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
Insère un montant monétaire au format spécifié dans un flux.
template <class Money>
T8 put_money(const Money& amount, bool use_intl);
Paramètres
amount
Valeur monétaire à insérer dans le flux.
use_intl
Défini sur true
si le manipulateur doit utiliser le format international, false
si ce n’est pas le cas.
Valeur de retour
Retourne str
.
Notes
Le manipulateur retourne un objet qui, quand il est inséré dans le flux str
, se comporte comme une fonction de sortie mise en forme qui appelle la fonction membre put
pour la facette de paramètres régionaux money_put
associée à str
. En cas de réussite, l’appel insère amount
correctement mis en forme, en utilisant use_intl pour indiquer le format international et str.fill()
, comme élément de remplissage. Le manipulateur retourne ensuite str
.
Money
doit être de type long double
ou une instanciation de basic_string
avec le même élément et les mêmes paramètres de caractéristiques que str
.
put_time
Écrit une valeur de temps à partir d’une structure de temps dans un flux à l’aide d’un format spécifié.
template <class Elem>
T10 put_time(struct tm* time_ptr, const Elem* time_format);
Paramètres
time_ptr
Valeur de temps à écrire dans le flux, fournie dans une structure de temps.
time_format
Format permettant d’écrire la valeur de temps.
Notes
Le manipulateur retourne un objet qui, quand il est inséré dans le flux str
, se comporte comme un formatted output function
. La fonction de sortie appelle la fonction membre put
pour la facette de paramètres régionaux time_put
associée à str
. La fonction de sortie utilise time_ptr
pour indiquer la structure de temps et time_format
indiquer le début d’une chaîne de format terminée par null. En cas de réussite, l’appel insère le texte littéral à partir de la chaîne de format et les valeurs converties à partir de la structure de temps. Le manipulateur retourne ensuite str
.
quoted
(Nouveautés de C++14) Manipulateur qui permet un iostream
aller-retour pratique de chaînes dans et hors des flux à l’aide >>
des opérateurs et <<
des opérateurs.
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
Paramètres
str
A std::string
, littéral char*
de chaîne ou littéral de chaîne brute, ou une version large de l’un de ces éléments (par exemple, std::wstring
, wchar_t*
).
delimiter
Caractère spécifié par l'utilisateur ou caractère large à utiliser comme délimiteur de début et de fin de chaîne.
escape
Caractère spécifié par l'utilisateur ou caractère large à utiliser comme caractère d'échappement pour les séquences d'échappement dans la chaîne.
Notes
Consultez Utilisation des opérateurs d’insertion et contrôle du format.
Exemples
Cet exemple montre comment utiliser quoted
avec le délimiteur et le caractère d'échappement par défaut avec des chaînes étroites. Les chaînes larges sont également prises en charge.
#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
*/
L’exemple suivant montre comment fournir un délimiteur personnalisé ou un caractère d’échappement :
#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
Efface les indicateurs spécifiés.
T1 resetiosflags(ios_base::fmtflags mask);
Paramètres
mask
Indicateurs à effacer.
Valeur de retour
Le manipulateur retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.setf(ios_base::fmtflags, mask)
, puis retourne str
, voir setf
et fmtflags
.
Exemple
Consultez setw
un exemple d’utilisation resetiosflags
.
setbase
Définir la base pour les entiers.
T3 setbase(int base);
Paramètres
base
Base numérique.
Valeur de retour
Le manipulateur retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.setf(mask, ios_base::basefield)
, puis retourne str
, voir ios_base::basefield
. Ici, mask
est déterminé comme suit :
Si
base
la valeur est 8, alorsmask
estios_base::oct
.Si
base
la valeur est 10, le masque estios_base::dec
.Si
base
la valeur est 16, alorsmask
estios_base::hex
.S’il
base
s’agit d’une autre valeur, le masque estios_base::fmtflags(0)
' .
Exemple
Consultez setw
un exemple d’utilisation setbase
.
setfill
Définit le caractère qui sera utilisé pour remplir les espaces dans un affichage aligné à droite.
template <class Elem>
T4 setfill(Elem Ch);
Paramètres
Ch
Caractère qui sera utilisé pour remplir les espaces dans un affichage aligné à droite.
Valeur de retour
Le manipulateur de modèle retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.fill(Ch)
, puis retourne str
. Le type Elem
doit être identique au type d’élément du flux str
.
Exemple
Consultez setw
un exemple d’utilisation setfill
.
setiosflags
Définit les indicateurs spécifiés.
T2 setiosflags(ios_base::fmtflags mask);
Paramètres
mask
Indicateurs à définir.
Valeur de retour
Le manipulateur retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.setf(mask)
, puis retourne str
, voir setf
.
Exemple
Consultez setw
un exemple d’utilisation setiosflags
.
setprecision
Définit la précision des valeurs à virgule flottante.
T5 setprecision(streamsize Prec);
Paramètres
Prec
Précision des valeurs à virgule flottante.
Valeur de retour
Le manipulateur retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.precision(Prec)
, puis retourne str
, voir precision
.
Exemple
Consultez setw
un exemple d’utilisation setprecision
.
setw
Spécifie la largeur du champ affichage pour l’élément suivant dans le flux.
T6 setw(streamsize Wide);
Paramètres
Wide
Largeur de la zone d’affichage.
Valeur de retour
Le manipulateur retourne un objet qui, lorsqu’il est extrait ou inséré dans le flux str
, appelle str.width(Wide)
, puis retourne str
. Pour plus d’informations, consultez width
.
Notes
setw
définit la largeur uniquement pour l’élément suivant dans le flux et doit être insérée avant chaque élément dont vous souhaitez spécifier la largeur.
Exemple
// 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