Bagikan melalui


Fungsi <iomanip>

get_money
get_time
put_money
put_time
quoted
resetiosflags
setbase
setfill
setiosflags
setprecision
setw

get_money

Mengekstrak nilai moneter dari aliran menggunakan format yang ditentukan, dan mengembalikan nilai dalam parameter.

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

Parameter

amount
Nilai moneter yang diekstrak.

use_intl
Jika true, gunakan format internasional. Nilai defaultnya adalah false.

Keterangan

Manipulator mengembalikan objek yang, ketika diekstrak dari aliran str, berperilaku sebagai formatted input function yang memanggil fungsi get anggota untuk faset money_get lokal yang terkait dengan str, menggunakan use_intl untuk menunjukkan format internasional. Jika berhasil, panggilan disimpan dalam nilai moneter yang diekstrak amount . Manipulator kemudian mengembalikan str.

Money harus berjenis long double atau instansiasi basic_string dengan parameter elemen dan sifat yang sama dengan str.

get_time

Mengekstrak nilai waktu dari aliran menggunakan format yang ditentukan. Mengembalikan nilai dalam parameter sebagai struktur waktu.

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

Parameter

time_ptr
Waktu dalam bentuk struktur waktu.

time_format
Format yang digunakan untuk mendapatkan nilai waktu.

Keterangan

Manipulator mengembalikan objek yang, ketika diekstrak dari aliran str, berperilaku sebagai formatted input function yang memanggil fungsi get anggota untuk faset time_get lokal yang terkait dengan str, menggunakan tptr untuk menunjukkan struktur waktu dan fmt untuk menunjukkan awal string format yang dihentikan null. Jika berhasil, panggilan disimpan dalam struktur waktu nilai yang terkait dengan bidang waktu yang diekstrak. Manipulator kemudian mengembalikan str.

Contoh

#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

Menyisipkan jumlah moneter menggunakan format yang ditentukan ke dalam aliran.

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

Parameter

amount
Jumlah moneter yang akan dimasukkan ke dalam aliran.

use_intl
Atur ke true jika manipulator harus menggunakan format internasional, false jika tidak seharusnya.

Tampilkan Nilai

Menampilkan str.

Keterangan

Manipulator mengembalikan objek yang, ketika dimasukkan ke dalam aliran str, berperilaku sebagai fungsi output berformat yang memanggil fungsi put anggota untuk faset money_put lokal yang terkait dengan str. Jika berhasil, panggilan menyisipkan amount format yang sesuai, menggunakan use_intl untuk menunjukkan format internasional dan str.fill(), sebagai elemen isian. Manipulator kemudian mengembalikan str.

Money harus berjenis long double atau instansiasi basic_string dengan parameter elemen dan sifat yang sama dengan str.

put_time

Menulis nilai waktu dari struktur waktu ke aliran dengan menggunakan format tertentu.

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

Parameter

time_ptr
Nilai waktu untuk menulis ke aliran, disediakan dalam struktur waktu.

time_format
Format untuk menulis nilai waktu.

Keterangan

Manipulator mengembalikan objek yang, ketika dimasukkan ke dalam aliran str, berulah sebagai formatted output function. Fungsi output memanggil fungsi put anggota untuk faset time_put lokal yang terkait dengan str. Fungsi output menggunakan time_ptr untuk menunjukkan struktur waktu dan time_format untuk menunjukkan awal string format yang dihentikan null. Jika berhasil, panggilan menyisipkan teks harfiah dari string format dan nilai yang dikonversi dari struktur waktu. Manipulator kemudian mengembalikan str.

quoted

(Baru di C++14)iostream Manipulator yang memungkinkan round-tripping string yang nyaman ke dalam dan ke luar aliran menggunakan >> operator dan << .

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
Untai std::string(karakter) , char*, literal atau untai mentah literal, atau versi yang luas dari salah satu ini (misalnya, std::wstring, wchar_t*).

delimiter
Karakter yang ditentukan pengguna, atau karakter lebar, untuk digunakan sebagai pemisah untuk awal dan akhir string.

escape
Karakter yang ditentukan pengguna, atau karakter lebar, untuk digunakan sebagai karakter escape untuk urutan escape dalam string.

Keterangan

Lihat Menggunakan Operator Penyisipan dan Format Pengontrol.

Contoh

Contoh ini menunjukkan cara menggunakan quoted dengan pemisah default dan karakter escape menggunakan string sempit. String lebar sama-sama didukung.

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

Contoh berikut menunjukkan cara memberikan pemisah kustom atau karakter 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

Menghapus bendera yang ditentukan.

T1 resetiosflags(ios_base::fmtflags mask);

Parameter

mask
Bendera untuk dihapus.

Tampilkan Nilai

Manipulator mengembalikan objek yang, ketika diekstrak dari atau dimasukkan ke dalam aliran str, memanggil str.setf(ios_base::fmtflags, mask), lalu mengembalikan str, lihat setf dan fmtflags.

Contoh

Lihat setw contoh penggunaan resetiosflags.

setbase

Atur basis untuk bilangan bulat.

T3 setbase(int base);

Parameter

base
Basis angka.

Tampilkan Nilai

Manipulator mengembalikan objek yang, ketika diekstrak dari atau dimasukkan ke dalam aliran str, memanggil str.setf(mask, ios_base::basefield), lalu mengembalikan str, lihat ios_base::basefield. Di sini, mask ditentukan sebagai berikut:

Contoh

Lihat setw contoh penggunaan setbase.

setfill

Mengatur karakter yang akan digunakan untuk mengisi spasi dalam tampilan yang dibenarkan kanan.

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

Parameter

Ch
Karakter yang akan digunakan untuk mengisi spasi dalam tampilan yang dibenarkan kanan.

Tampilkan Nilai

Manipulator templat mengembalikan objek yang, ketika diekstrak dari atau disisipkan ke dalam aliran str, panggilan str.fill(Ch), lalu mengembalikan str. Jenisnya Elem harus sama dengan jenis elemen untuk aliran str.

Contoh

Lihat setw contoh penggunaan setfill.

setiosflags

Mengatur bendera yang ditentukan.

T2 setiosflags(ios_base::fmtflags mask);

Parameter

mask
Bendera yang akan diatur.

Tampilkan Nilai

Manipulator mengembalikan objek yang, ketika diekstrak dari atau dimasukkan ke dalam aliran str, memanggil str.setf(mask), lalu mengembalikan str, lihat setf.

Contoh

Lihat setw contoh penggunaan setiosflags.

setprecision

Mengatur presisi untuk nilai floating-point.

T5 setprecision(streamsize Prec);

Parameter

Prec
Presisi untuk nilai floating-point.

Tampilkan Nilai

Manipulator mengembalikan objek yang, ketika diekstrak dari atau dimasukkan ke dalam aliran str, memanggil str.precision(Prec), lalu mengembalikan str, lihat precision.

Contoh

Lihat setw contoh penggunaan setprecision.

setw

Menentukan lebar bidang tampilan untuk elemen berikutnya dalam aliran.

T6 setw(streamsize Wide);

Parameter

Wide
Lebar bidang tampilan.

Tampilkan Nilai

Manipulator mengembalikan objek yang, ketika diekstrak dari atau dimasukkan ke dalam aliran str, memanggil str.width(Wide), lalu mengembalikan str. Untuk informasi selengkapnya, lihat width .

Keterangan

setw mengatur lebar hanya untuk elemen berikutnya dalam aliran dan harus disisipkan sebelum setiap elemen yang lebarnya ingin Anda tentukan.

Contoh

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

Baca juga

<iomanip>