Sdílet prostřednictvím


<iomanip> – funkce

get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw

get_money

Extrahuje peněžní hodnotu z datového proudu pomocí zadaného formátu a vrátí hodnotu v parametru.

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

Parametry

amount
Extrahovaná peněžní hodnota.

use_intl
Pokud true, použijte mezinárodní formát. Výchozí hodnota je false.

Poznámky

Manipulátor vrátí objekt, který se při extrahování z datového proudu strchová jako formatted input function volání členské funkce get pro omezující vlastnost money_get národního prostředí přidruženou strk použití use_intl k označení mezinárodního formátu. V případě úspěchu volání ukládá v amount extrahované peněžní hodnotě. Manipulátor pak vrátí str.

Money musí být typu long double nebo vytvoření instance basic_string se stejným prvkem a parametry vlastností jako str.

get_time

Extrahuje časovou hodnotu z datového proudu pomocí zadaného formátu. Vrátí hodnotu v parametru jako časovou strukturu.

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

Parametry

time_ptr
Čas ve formě časové struktury.

time_format
Formát, který se má použít k získání hodnoty času.

Poznámky

Manipulátor vrátí objekt, který se při extrahování z datového proudu strchová jako formatted input function volání členské funkce pro omezující vlastnost time_get get národního prostředí přidruženou strk použití tptr k označení časové struktury a fmt k označení začátku řetězce formátu s ukončenou hodnotou null. V případě úspěchu volání ukládá v časové struktuře hodnoty přidružené k jakýmkoli extrahovaným časovým polím. Manipulátor pak vrátí str.

Příklad

#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

Vloží peněžní částku pomocí zadaného formátu do datového proudu.

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

Parametry

amount
Peněžní částka, která se má vložit do datového proudu.

use_intl
Nastavte, true jestli manipulátor má používat mezinárodní formát, false pokud by neměl.

Návratová hodnota

Vrací objekt str.

Poznámky

Manipulátor vrátí objekt, který se při vložení do datového proudu strchová jako formátovaná výstupní funkce, která volá členovou funkci put pro omezující vlastnost money_put národního prostředí přidruženou str. V případě úspěchu volání vloží amount vhodně formátovaný pomocí use_intl k označení mezinárodního formátu a str.fill(), jako prvek výplně. Manipulátor pak vrátí str.

Money musí být typu long double nebo vytvoření instance basic_string se stejným prvkem a parametry vlastností jako str.

put_time

Zapíše časovou hodnotu z časové struktury do datového proudu pomocí zadaného formátu.

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

Parametry

time_ptr
Časová hodnota pro zápis do datového proudu, která je poskytována v časové struktuře.

time_format
Formát pro zápis časové hodnoty.

Poznámky

Manipulátor vrátí objekt, který se při vložení do datového proudu strchová jako formatted output function. Výstupní funkce volá členovou funkci pro omezující vlastnost put time_put národního prostředí přidruženou k str. Výstupní funkce používá time_ptr k označení časové struktury a time_format k označení začátku řetězce formátu s ukončenou hodnotou null. V případě úspěchu volání vloží literálový text z řetězce formátu a převede hodnoty z časové struktury. Manipulátor pak vrátí str.

quoted

(Nové v C++14) iostream Manipulátor, který umožňuje pohodlné přecházení řetězců do a z datových proudů pomocí >> operátorů a << operátorů.

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
A std::string, řetězcový char*literál nebo nezpracovaný řetězcový literál nebo široká verze některé z těchto hodnot (například std::wstring, ). wchar_t*

delimiter
Znak zadaný uživatelem nebo široký znak, který se použije jako oddělovač pro začátek a konec řetězce.

escape
Znak zadaný uživatelem nebo široký znak, který se použije jako řídicí znak pro řídicí sekvence v řetězci.

Poznámky

Viz použití operátorů vložení a řízení formátu.

Příklady

Tento příklad ukazuje, jak použít quoted s výchozím oddělovačem a řídicím znakem pomocí úzkých řetězců. Široké řetězce jsou stejně podporované.

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

Následující příklad ukazuje, jak poskytnout vlastní oddělovač nebo řídicí znak:

#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

Vymaže zadané příznaky.

T1 resetiosflags(ios_base::fmtflags mask);

Parametry

mask
Příznaky, které se mají vymazat.

Návratová hodnota

Manipulátor vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.setf(ios_base::fmtflags, mask)a poté vrátí str, viz setf a fmtflags.

Příklad

Podívejte se setw na příklad použití resetiosflags.

setbase

Nastaví základ pro celá čísla.

T3 setbase(int base);

Parametry

base
Základ čísel.

Návratová hodnota

Manipulátor vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.setf(mask, ios_base::basefield)a poté vrátí str, viz ios_base::basefield. mask Zde je určeno takto:

Příklad

Podívejte se setw na příklad použití setbase.

setfill

Nastaví znak, který se použije k vyplnění mezer v pravé části zobrazení.

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

Parametry

Ch
Znak, který se použije k vyplnění mezer v pravé části zobrazení.

Návratová hodnota

Manipulátor šablony vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.fill(Ch)a poté vrátí str. Typ Elem musí být stejný jako typ prvku pro stream str.

Příklad

Podívejte se setw na příklad použití setfill.

setiosflags

Nastaví zadané příznaky.

T2 setiosflags(ios_base::fmtflags mask);

Parametry

mask
Příznaky, které chcete nastavit.

Návratová hodnota

Manipulátor vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.setf(mask)a poté vrátí str, viz setf.

Příklad

Podívejte se setw na příklad použití setiosflags.

setprecision

Nastaví přesnost pro hodnoty s plovoucí desetinnou čárkou.

T5 setprecision(streamsize Prec);

Parametry

Prec
Přesnost pro hodnoty s plovoucí desetinnou čárkou.

Návratová hodnota

Manipulátor vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.precision(Prec)a poté vrátí str, viz precision.

Příklad

Podívejte se setw na příklad použití setprecision.

setw

Určuje šířku zobrazovaného pole pro další prvek ve streamu.

T6 setw(streamsize Wide);

Parametry

Wide
Šířka zobrazovaného pole.

Návratová hodnota

Manipulátor vrátí objekt, který při extrahování nebo vložení do datového proudu str, volání str.width(Wide), pak vrátí str. Další informace najdete na webu width.

Poznámky

setw nastaví šířku pouze pro další prvek v datovém proudu a musí být vložen před každý prvek, jehož šířku chcete zadat.

Příklad

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

Viz také

<iomanip>