Fungsi swprintf () di C ++ digunakan untuk menulis string lebar yang diformat ke buffer string lebar.
Fungsi swprintf () didefinisikan dalam file header.
swprintf () prototipe
int swprintf (wchar_t * buffer, size_t size, const wchar_t * format,…);
Fungsi swprintf () menulis string lebar yang ditunjukkan oleh format ke buffer. Jumlah karakter maksimal yang dapat ditulis adalah (size-1).
Setelah karakter ditulis, karakter lebar null terminating ditambahkan.
Format string lebar mungkin berisi penentu format yang dimulai dengan% yang digantikan oleh nilai variabel yang diteruskan ke fungsi swprintf () sebagai argumen tambahan.
Parameter swprintf ()
- buffer: Arahkan ke buffer string untuk menulis hasilnya.
- size: Tentukan jumlah karakter maksimum yang akan ditulis ke buffer yaitu size-1.
- format: Sebuah pointer ke string lebar diakhiri null yang ditulis ke stdout. Ini terdiri dari karakter lebar bersama dengan penentu format opsional yang dimulai dengan%. Penentu format diganti dengan nilai variabel masing-masing yang mengikuti format.
Penentu format memiliki bagian-bagian berikut:- Tanda% terkemuka
- Bendera: Pilihan satu atau lebih tanda yang mengubah perilaku konversi.
- -: Rata kiri hasil di lapangan. Secara default, ini benar.
- +: Tanda hasil dilampirkan di awal nilai, bahkan untuk hasil positif.
- Spasi: Jika tidak ada tanda, spasi dilampirkan di awal hasil.
- #: Bentuk alternatif dari konversi dilakukan.
- 0: Digunakan untuk bilangan bulat dan bilangan floating point. Nol di depan digunakan untuk mengisi angka, bukan spasi.
- Lebar: Nilai opsional * atau bilangan bulat yang digunakan untuk menentukan bidang lebar minimum.
- Presisi: Bidang opsional yang terdiri dari a. diikuti dengan * atau integer atau tidak sama sekali untuk menentukan presisi.
- Panjang: Pengubah panjang opsional yang menentukan ukuran argumen.
- Penentu: Penentu format konversi. Penentu format yang tersedia adalah sebagai berikut:
Penentu Format Deskripsi % Cetakan% c Menulis satu karakter s Menulis string karakter d atau i Mengonversi bilangan bulat bertanda menjadi representasi desimal Hai Mengonversi bilangan bulat tak bertanda tangan menjadi representasi oktal X atau x Mengonversi bilangan bulat tak bertanda menjadi representasi heksadesimal u Mengonversi bilangan bulat tak bertanda menjadi representasi desimal F atau f Mengonversi bilangan floating-point menjadi representasi desimal E atau e Mengonversi bilangan titik-mengambang menjadi notasi eksponen desimal A atau a Mengonversi bilangan titik-mengambang menjadi eksponen heksadesimal G atau g Mengonversi bilangan titik-mengambang menjadi notasi eksponen desimal atau desimal n Mengembalikan jumlah karakter yang ditulis sejauh ini oleh panggilan ini ke fungsi. Hasilnya ditulis ke nilai yang ditunjukkan oleh argumen p Menulis implementasi urutan karakter yang didefinisikan yang mendefinisikan sebuah pointer.
Jadi format umum penentu format adalah:% (flags) (width) (. precision) (length) specifier
- …: Argumen tambahan lainnya yang menentukan data yang akan ditulis. Mereka terjadi dalam urutan sesuai dengan penentu format.
swprintf () Nilai kembali
- Jika berhasil, fungsi swprintf () mengembalikan jumlah karakter yang ditulis tidak termasuk karakter lebar null yang mengakhiri.
- Jika kesalahan pengkodean terjadi atau jika jumlah karakter yang akan dihasilkan sama atau lebih besar dari ukuran, nilai negatif dikembalikan.
Contoh: Bagaimana fungsi swprintf () bekerja?
#include #include #include #include using namespace std; int main() ( wchar_t hebrew_str() = L"u05D0 u05D1 u05E1 u05D3 u05EA"; wchar_t buffer(100); setlocale(LC_ALL, "en_US.UTF-8"); swprintf(buffer, sizeof(hebrew_str), L"%ls", hebrew_str); wcout << L"Some hebrew letters" << buffer << endl; return 0; )
Saat Anda menjalankan program, berikut ini akan ditulis ke example.txt:
Beberapa huruf Ibrani א ב ס ד ת