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:
Jika
base
adalah 8, makamask
adalahios_base::oct
.Jika
base
adalah 10, maka masker adalahios_base::dec
.Jika
base
adalah 16, makamask
adalahios_base::hex
.Jika
base
merupakan nilai lain, maka masker adalahios_base::fmtflags(0)
'.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk