C ++ vswprintf () - Perpustakaan Standard C ++

Fungsi vswprintf () dalam C ++ digunakan untuk menulis rentetan lebar berformat ke penyangga rentetan lebar.

Fungsi vswprintf () ditentukan dalam fail tajuk.

prototaip vswprintf ()

 int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * format, va_list vlist);

Fungsi vswprintf () menulis rentetan lebar yang ditunjukkan oleh format ke penyangga rentetan lebar. Maksimum (buf_size-1)watak lebar ditulis untuk penyangga yang diikuti oleh watak lebar kosong.

Format tali lebar mungkin mengandungi penentu format bermula dengan% yang digantikan oleh nilai-nilai pemboleh ubah yang dilewatkan sebagai senarai daftar.

Parameter vswprintf ()

  • penyangga: Penunjuk ke penyangga rentetan lebar untuk menulis hasilnya.
  • buf_size: Jumlah maksimum aksara lebar untuk ditulis termasuk aksara null lebar yang berakhir.
  • format: Penunjuk ke rentetan lebar yang dihentikan nol yang ditulis untuk penyangga. Ia terdiri daripada watak-watak bersama dengan penentu format pilihan bermula dengan%. Penentu format digantikan oleh nilai pemboleh ubah masing-masing yang mengikuti format.
    Penentu format mempunyai bahagian-bahagian berikut:
    • Tanda% terkemuka
    • Bendera: Pilihan satu atau lebih bendera yang mengubah tingkah laku penukaran.
      • -: Kiri membenarkan hasilnya di lapangan. Secara lalai ia dibenarkan.
      • +: Tanda hasil dilampirkan pada awal nilai, bahkan untuk hasil positif.
      • Ruang: Sekiranya tidak ada tanda, ruang dilampirkan pada awal hasil.
      • #: Satu bentuk penukaran alternatif dilakukan.
      • 0: Digunakan untuk nombor bulat dan bilangan bulat. Nol sifar digunakan untuk menambah angka dan bukannya ruang.
    • Lebar: Nilai * atau integer pilihan yang digunakan untuk menentukan medan lebar minimum.
    • Ketepatan: Medan pilihan yang terdiri daripada a. diikuti oleh * atau bilangan bulat atau tidak ada yang menentukan ketepatan.
    • Panjang: Pengubah panjang pilihan yang menentukan ukuran argumen.
    • Penentu: Penentu format penukaran. Penentu format yang ada adalah seperti berikut:
    Penentu format
    Penentu Format Penerangan
    % Cetakan%
    c Menulis watak tunggal
    s Menulis rentetan watak
    d atau i Menukar bilangan bulat yang ditandakan menjadi perwakilan perpuluhan
    o Menukar bilangan bulat yang tidak bertanda kepada perwakilan oktal
    X atau x Menukar bilangan bulat yang tidak bertanda menjadi perwakilan heksadesimal
    awak Menukar bilangan bulat yang tidak bertanda menjadi perwakilan perpuluhan
    F atau f Menukar nombor titik terapung ke perwakilan perpuluhan
    E atau e Menukar nombor titik terapung ke notasi eksponen perpuluhan
    A atau a Menukar nombor titik terapung ke eksponen heksadesimal
    G atau g Menukar nombor titik terapung ke notasi eksponen perpuluhan atau perpuluhan
    n Mengembalikan jumlah watak yang ditulis sejauh ini oleh panggilan ini ke fungsi. Hasilnya ditulis berdasarkan nilai yang ditunjukkan oleh hujah
    hlm Menulis urutan watak yang ditentukan pelaksanaan yang menentukan penunjuk.

    Jadi format umum penentu format adalah:
     Penentu% (bendera) (lebar) (. ketepatan) (panjang)
  • vlist: Senarai hujah yang mengandungi data untuk ditulis

vswprintf () Nilai pulangan

  • Sekiranya berjaya, fungsi vswprintf () mengembalikan bilangan aksara lebar yang ditulis tidak termasuk aksara lebar kosong yang berakhir
  • Nilai negatif dikembalikan jika ada ralat pengekodan atau jika bilangan aksara yang akan dihasilkan sama atau lebih besar daripada buf_size.

Contoh: Bagaimana fungsi vswprintf () berfungsi?

 #include #include #include void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt,… ) ( va_list args; va_start(args, fmt); vswprintf(buffer, buf_size, fmt, args); va_end(args); ) int main () ( wchar_t str() = L"u0684 u06b1 u06aa u06a3 u0684"; wchar_t buffer(50); setlocale(LC_ALL, "en_US.UTF-8"); write(buffer, 50, L"Arabic Letters: %ls", str); wprintf(L"%ls", buffer); return 0; )

Semasa anda menjalankan program, perkara berikut akan ditulis ke example.txt:

 Huruf Arab: ڄ ڱڱ ڣ ڄ

Artikel menarik...