Condividi tramite


<iomanip> funzioni

get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw

get_money

Estrae un valore monetario da un flusso usando il formato specificato e restituisce il valore in un parametro.

template <class Money>
T7 get_money(Money& amount, bool use_intl);

Parametri

amount
Valore monetario estratto.

use_intl
Se true, usare il formato internazionale. Il valore predefinito è false.

Osservazioni:

Il manipolatore restituisce un oggetto che, se estratto dal flusso str, si comporta come un oggetto formatted input function che chiama la funzione membro get per il facet delle impostazioni locali money_get associato a str, usando use_intl per indicare il formato internazionale. Se ha esito positivo, la chiamata archivia il valore monetario estratto in amount. Il manipolatore restituisce quindi str.

Money deve essere di tipo long double o un'istanza di basic_string con gli stessi parametri di elemento e dei tratti di str.

get_time

Estrae un valore di ora da un flusso usando il formato specificato. Restituisce il valore in un parametro come una struttura temporale.

template <class Elem>
T10 get_time(struct tm *time_ptr, const Elem *time_format);

Parametri

time_ptr
Ora nella forma di una struttura temporale.

time_format
Formato da utilizzare per ottenere il valore di ora.

Osservazioni:

Il manipolatore restituisce un oggetto che, se estratto dal flusso str, si comporta come un oggetto formatted input function che chiama la funzione membro get per il facet delle impostazioni locali time_get associato a str, usando tptr per indicare la struttura temporale e fmt per indicare l'inizio di una stringa di formato con terminazione Null. Se ha esito positivo, la chiamata archivia nella struttura temporale i valori associati ai campi ora estratti. Il manipolatore restituisce quindi str.

Esempio

#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

Inserisce un importo monetario utilizzando il formato specificato in un flusso.

template <class Money>
T8 put_money(const Money& amount, bool use_intl);

Parametri

amount
Importo monetario da inserire nel flusso.

use_intl
Impostare su true se il manipolatore deve usare il formato internazionale, false in caso contrario.

Valore restituito

Restituisce str.

Osservazioni:

Il manipolatore restituisce un oggetto che, se inserito nel flusso str, si comporta come una funzione di output formattata che chiama la funzione membro put per il facet delle impostazioni locali money_put associato a str. In caso di esito positivo, la chiamata inserisce amount una formattazione adeguata, utilizzando use_intl per indicare il formato internazionale e str.fill(), come elemento di riempimento. Il manipolatore restituisce quindi str.

Money deve essere di tipo long double o un'istanza di basic_string con gli stessi parametri di elemento e dei tratti di str.

put_time

Scrive un valore di ora di una struttura temporale in un flusso usando un formato specificato.

template <class Elem>
T10 put_time(struct tm* time_ptr, const Elem* time_format);

Parametri

time_ptr
Valore di ora da scrivere nel flusso, fornito in una struttura temporale.

time_format
Formato per scrivere il valore dell'ora.

Osservazioni:

Il manipolatore restituisce un oggetto che, se inserito nel flusso str, si comporta come un oggetto formatted output function. La funzione di output chiama la funzione membro put per il facet delle impostazioni locali time_put associato a str. La funzione di output usa time_ptr per indicare la struttura temporale e time_format per indicare l'inizio di una stringa di formato con terminazione Null. Se ha esito positivo, la chiamata inserisce testo letterale ottenuto dalla stringa di formato e i valori convertiti dalla struttura temporale. Il manipolatore restituisce quindi str.

quoted

(Novità in C++14) Manipolatore iostream che consente un pratico round trip delle stringhe all'interno e all'esterno di flussi usando gli >> operatori e << .

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

Parametri

str
Valore std::stringletterale char*stringa , valore letterale stringa o valore letterale stringa non elaborato oppure una versione wide di uno di questi valori , ad esempio std::wstring, wchar_t*.

delimiter
Carattere specificato dall'utente o carattere wide da usare come delimitatore per l'inizio e la fine della stringa.

escape
Carattere specificato dall'utente o carattere wide da usare come carattere di escape per le sequenze di escape all'interno della stringa.

Osservazioni:

Vedere Uso degli operatori di inserimento e controllo del formato.

Esempi

Questo esempio illustra come usare quoted con il delimitatore e il carattere di escape predefiniti usando stringhe narrow. Sono supportate anche le stringhe wide.

#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'esempio seguente illustra come fornire un delimitatore personalizzato o un carattere di escape:

#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

Cancella i flag specificati.

T1 resetiosflags(ios_base::fmtflags mask);

Parametri

mask
Flag da cancellare.

Valore restituito

Il manipolatore restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.setf(ios_base::fmtflags, mask)e quindi restituisce str, vedere setf e fmtflags.

Esempio

Vedere setw per un esempio di uso resetiosflagsdi .

setbase

Imposta la base per i valori integer.

T3 setbase(int base);

Parametri

base
Base numerica.

Valore restituito

Il manipolatore restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.setf(mask, ios_base::basefield)e quindi restituisce str, vedere ios_base::basefield. In questo caso, mask viene determinato come segue:

Esempio

Vedere setw per un esempio di uso setbasedi .

setfill

Imposta il carattere che verrà usato per riempire gli spazi in una visualizzazione giustificata a destra.

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

Parametri

Ch
Carattere che verrà usato per riempire gli spazi in una visualizzazione giustificata a destra.

Valore restituito

Il manipolatore di modelli restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.fill(Ch)e quindi restituisce str. Il tipo Elem deve essere uguale al tipo di elemento per il flusso str.

Esempio

Vedere setw per un esempio di uso setfilldi .

setiosflags

Imposta i flag specificati.

T2 setiosflags(ios_base::fmtflags mask);

Parametri

mask
Flag da impostare.

Valore restituito

Il manipolatore restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.setf(mask)e quindi restituisce str, vedere setf.

Esempio

Vedere setw per un esempio di uso setiosflagsdi .

setprecision

Imposta la precisione per i valori a virgola mobile.

T5 setprecision(streamsize Prec);

Parametri

Prec
Precisione per i valori a virgola mobile.

Valore restituito

Il manipolatore restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.precision(Prec)e quindi restituisce str, vedere precision.

Esempio

Vedere setw per un esempio di uso setprecisiondi .

setw

Specifica la larghezza del campo di visualizzazione per l'elemento successivo nel flusso.

T6 setw(streamsize Wide);

Parametri

Wide
Larghezza del campo di visualizzazione.

Valore restituito

Il manipolatore restituisce un oggetto che, se estratto o inserito nel flusso str, chiama str.width(Wide), quindi restituisce str. Per ulteriori informazioni, vedere width.

Osservazioni:

setw imposta la larghezza solo per l'elemento successivo nel flusso e deve essere inserita prima di ogni elemento la cui larghezza si desidera specificare.

Esempio

// 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

Vedi anche

<iomanip>