C ++ vswprintf () - štandardná knižnica C ++

Funkcia vswprintf () v C ++ sa používa na zápis formátovaného širokého reťazca do medzipamäte širokého reťazca.

Funkcia vswprintf () je definovaná v hlavičkovom súbore.

prototyp vswprintf ()

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

Funkcia vswprintf () zapíše široký reťazec, na ktorý ukazuje formát, do medzipamäte širokého reťazca. Do (buf_size-1)medzipamäte sa zapisuje maximálne širokých znakov, za ktorými nasleduje prázdny široký znak.

Formát širokého reťazca môže obsahovať špecifikátory formátu začínajúce na%, ktoré sú nahradené hodnotami premenných, ktoré sa odovzdávajú ako zoznam vlist.

Parametre vswprintf ()

  • buffer: Ukazovateľ na široký reťazcový buffer na zapísanie výsledku.
  • buf_size: Maximálny počet širokých znakov na zápis vrátane ukončovacieho prázdneho širokého znaku.
  • formát: Ukazovateľ na null ukončený široký reťazec, ktorý je zapísaný do medzipamäte. Skladá sa zo znakov spolu s voliteľnými špecifikátormi formátu začínajúcich na%. Špecifikátory formátu sú nahradené hodnotami príslušných premenných, ktoré nasledujú po formáte.
    Špecifikátor formátu má tieto časti:
    • Vedúci znak%
    • Príznaky: Voliteľný jeden alebo viac príznakov, ktoré upravujú správanie pri konverzii.
      • -: Zarovnanie doľava k výsledku v rámci poľa. Štandardne je to zarovnané doprava.
      • +: Znamienko výsledku sa pripája na začiatok hodnoty, a to aj v prípade pozitívnych výsledkov.
      • Medzera: Ak nie je žiadny znak, na začiatok výsledku sa pripojí medzera.
      • #: Vykoná sa alternatívna forma konverzie.
      • 0: Používa sa na celé číslo a číslo s pohyblivou rádovou čiarkou. Na vyplnenie čísel namiesto medzery sa používajú úvodné nuly.
    • Šírka: Voliteľná * alebo celočíselná hodnota používaná na zadanie poľa minimálnej šírky.
    • Presnosť: Nepovinné pole pozostávajúce z a. za ktorými nasleduje * alebo celé číslo alebo nič, aby sa určila presnosť.
    • Dĺžka: Voliteľný modifikátor dĺžky, ktorý určuje veľkosť argumentu.
    • Špecifikátor: Špecifikátor formátu prevodu. Dostupné špecifikátory formátu sú:
    Špecifikátory formátu
    Špecifikátor formátu Popis
    % Vytlačí%
    c Píše jeden znak
    s Zapíše reťazec znakov
    d alebo i Skonvertuje celé číslo so znamienkom na desatinné miesto
    o Skonvertuje celé číslo bez znamienka na osmičkovú reprezentáciu
    X alebo x Skonvertuje celé číslo bez znamienka na hexadecimálne vyjadrenie
    u Skonvertuje celé číslo bez znamienka na desatinné miesto
    F alebo f Prevedie číslo s pohyblivou rádovou čiarkou na desatinné miesto
    E alebo e Skonvertuje číslo s pohyblivou desatinnou čiarkou na desatinný zápis exponentu
    A alebo a Prevedie číslo s pohyblivou rádovou čiarkou na hexadecimálny exponent
    G alebo g Prevedie číslo s pohyblivou rádovou čiarkou na desatinný alebo desatinný zápis exponentu
    n Vráti počet znakov doteraz napísaných týmto volaním funkcie. Výsledok sa zapíše na hodnotu, na ktorú poukazuje argument
    p Zapíše postupnosť znakov definujúcich implementáciu, ktorá definuje ukazovateľ.

    Všeobecný formát špecifikátora formátu je teda:
     Špecifikátor% (vlajky) (šírka) (. presnosť) (dĺžka)
  • vlist: Zoznam argumentov obsahujúcich údaje na zápis.

vswprintf () Vrátená hodnota

  • Ak je úspešná, funkcia vswprintf () vráti počet napísaných širokých znakov s výnimkou ukončovacieho prázdneho širokého znaku.
  • Záporná hodnota sa vráti, ak dôjde k chybe v kódovaní, alebo ak je počet vygenerovaných znakov rovnaký alebo väčší ako buf_size.

Príklad: Ako funguje funkcia vswprintf ()?

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

Po spustení programu sa do súboru example.txt zapíše nasledujúci text:

 Arabské písmená: ڄ ڱ ڪ ڣ ڄ

Zaujímavé články...