C ++ vswprintf () - C ++ - vakiokirjasto

Funktiota vswprintf () C ++: ssa käytetään muotoilun leveän merkkijonon kirjoittamiseen laajaan merkkijonopuskuriin.

Funktio vswprintf () määritetään otsikkotiedostossa.

vswprintf () -prototyyppi

 int vswprintf (wchar_t * puskuri, size_t buf_size, const wchar_t * muoto, va_list vlist);

Vswprintf () -funktio kirjoittaa leveän merkkijonon, johon muoto on osoittanut, leveään merkkijonopuskuriin. (buf_size-1)Puskuriin kirjoitetaan enintään leveät merkit, joita seuraa tyhjä leveä merkki.

Laaja merkkijono -muoto voi sisältää% -alkuisia muotoilutunnisteita, jotka korvataan luetteloluettelona välitettävien muuttujien arvoilla.

vswprintf () -parametrit

  • puskuri: Osoitin laajaan merkkijonopuskuriin tuloksen kirjoittamiseksi.
  • buf_size: Kirjoitettavien leveiden merkkien enimmäismäärä, mukaan lukien lopetettava tyhjä leveä merkki.
  • muoto: Osoitin tyhjäksi päätettyyn leveään merkkijonoon, joka kirjoitetaan puskuriin. Se koostuu merkeistä ja valinnaisista muotomäärittimistä, jotka alkavat%: lla. Formaatin määrittelijät korvataan vastaavien muuttujien arvoilla, jotka seuraavat muotoa.
    Formaatin määrittelijässä on seuraavat osat:
    • Johtava% -merkki
    • Liput: Valinnainen yksi tai useampi lippu, joka muuttaa konversiokäyttäytymistä.
      • -: Vasen tasaa tuloksen kentässä. Oletuksena se on oikein perusteltu.
      • +: Tuloksen merkki liitetään arvon alkuun, myös positiivisten tulosten saamiseksi.
      • Välilyönti: Jos merkkiä ei ole, tuloksen alkuun kiinnitetään välilyönti.
      • #: Vaihtoehtoinen muunnos suoritetaan.
      • 0: Sitä käytetään kokonaislukuun ja liukulukuihin. Numeroita käytetään välilyöntien sijasta etunollia.
    • Leveys: Valinnainen * tai kokonaislukuarvo, jota käytetään minimileveyskentän määrittämiseen.
    • Tarkkuus: Valinnainen kenttä, joka koostuu a. jota seuraa * tai kokonaisluku tai ei mitään tarkkuuden määrittämiseksi.
    • Pituus: Valinnainen pituuden muuttaja, joka määrittää argumentin koon.
    • Määritin: Muunnosmuodon määrittelijä. Saatavilla olevat muotomäärittimet ovat seuraavat:
    Muotomäärittimet
    Formaatin määrittelijä Kuvaus
    % Tulosteet%
    c Kirjoittaa yhden merkin
    s Kirjoittaa merkkijonon
    d tai i Muuntaa allekirjoitetun kokonaisluvun desimaaliedustukseksi
    o Muuntaa allekirjoittamattoman kokonaisluvun oktaaliedustukseksi
    X tai x Muuntaa allekirjoittamattoman kokonaisluvun heksadesimaaliluvuksi
    u Muuntaa allekirjoittamattoman kokonaisluvun desimaaliedustukseksi
    F tai f Muuntaa liukuluvun desimaaliluvuksi
    E tai e Muuntaa liukuluvun desimaalilausekkeeksi
    A tai a Muuntaa liukuluvun luvun heksadesimaalilausekkeeksi
    G tai g Muuntaa liukuluvun desimaalin tai desimaalin eksponenttimerkinnäksi
    n Palauttaa tämän kutsun tähän mennessä kirjoittamien merkkien määrän funktioon. Tulos kirjoitetaan argumentin osoittamaan arvoon
    s Kirjoittaa toteutuksessa määritetyn merkkijonon, joka määrittelee osoittimen.

    Joten muodon määrittelijän yleinen muoto on:
     % (liput) (leveys) (. tarkkuus) (pituus) määrittelijä
  • vlist: Luettelo argumenteista, jotka sisältävät kirjoitettavat tiedot.

vswprintf () Palautusarvo

  • Jos se onnistuu, vswprintf () -funktio palauttaa kirjoitettujen leveiden merkkien lukumäärän lukuun ottamatta lopetettavaa tyhjää leveää merkkiä.
  • Negatiivinen arvo palautetaan, jos ilmenee koodausvirheitä tai jos luotavien merkkien määrä oli yhtä suuri tai suurempi kuin buf_size.

Esimerkki: Kuinka funktio vswprintf () toimii?

 #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; )

Kun suoritat ohjelman, seuraava kirjoitetaan esimerkkiin.txt:

 Arabiakirjaimet: ڄ ڱ ڪ ڣ ڄ

Mielenkiintoisia artikkeleita...