Funkcia swprintf () v C ++ sa používa na zápis formátovaného širokého reťazca do medzipamäte širokého reťazca.
Funkcia swprintf () je definovaná v hlavičkovom súbore.
prototyp swprintf ()
int swprintf (wchar_t * buffer, size_t veľkosť, const wchar_t * formát, …);
Funkcia swprintf () zapíše široký reťazec, na ktorý ukazuje formát, do medzipamäte. Maximálny počet znakov, ktoré je možné zapísať, je (veľkosť-1).
Po napísaní znakov sa pridá zakončovací znak s nulovou šírkou.
Formát širokého reťazca môže obsahovať špecifikátory formátu začínajúce na%, ktoré sú nahradené hodnotami premenných, ktoré sú odovzdané funkcii swprintf () ako ďalšie argumenty.
Parametre swprintf ()
- medzipamäť: Ukazovateľ na medzipamäť reťazca na zapísanie výsledku.
- veľkosť: Zadajte maximálny počet znakov, ktoré sa majú zapísať do medzipamäte, čo je veľkosť-1.
- formát: Ukazovateľ na prázdny reťazec zakončený hodnotou null, ktorý je zapísaný na štandardný výstup. Skladá sa zo širokých znakov a voliteľných špecifikátorov 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á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)
- …: Ďalšie ďalšie argumenty určujúce údaje, ktoré sa majú zapísať. Vyskytujú sa v poradí podľa špecifikátora formátu.
swprintf () Vrátiť hodnotu
- Pri úspechu funkcia swprintf () vráti počet napísaných znakov s výnimkou ukončovacieho znaku null wide.
- Ak došlo k chybe kódovania alebo ak bol počet vygenerovaných znakov rovnaký alebo väčší ako veľkosť, vráti sa záporná hodnota.
Príklad: Ako funguje funkcia swprintf ()?
#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; )
Po spustení programu sa do súboru example.txt zapíše nasledujúci text:
Niektoré hebrejské písmená א ב ס ד ת