A vswprintf () függvény a C ++ - ban egy formázott széles karakterlánc írására szolgál egy széles karakterlánc-pufferbe.
Az vswprintf () függvény a fejlécfájlban van meghatározva.
vswprintf () prototípus
int vswprintf (wchar_t * puffer, size_t buf_size, const wchar_t * formátum, va_list vlist);
A vswprintf () függvény a széles karakterláncot formátum szerint rámutatja a széles karakterlánc-pufferre. A (buf_size-1)
pufferbe maximum széles karaktereket írnak, amelyet egy null széles karakter követ.
A széles karaktersorozat formátuma tartalmazhat% -al kezdődő formátummeghatározókat, amelyek helyébe a listavlistaként átadott változók értékei lépnek.
vswprintf () Paraméterek
- puffer: Mutató egy széles karakterlánc-pufferhez az eredmény megírásához.
- buf_size: Az írható széles karakterek maximális száma, beleértve a befejező null széles karaktert is.
- formátum: Egy nullával végződött széles karaktersorozat mutatója, amelyet pufferbe írnak. Karakterekből áll, és opcionális formátum-specifikátorokkal kezdődik, amelyek% -kal kezdődnek. A formátum-specifikátorokat a megfelelő változók formátumot követő értéke váltja fel.
A formátummeghatározó a következő részekkel rendelkezik:- Vezető% jel
- Jelölések: Opcionálisan egy vagy több jelölés, amely módosítja a konverzió viselkedését.
- -: Bal igazolja az eredményt a mezőn belül. Alapértelmezés szerint helyesen indokolt.
- +: Az eredmény jele az érték elejéhez van kötve, még pozitív eredmények esetén is.
- Szóköz: Ha nincs előjel, akkor az eredmény elejéhez szóköz tartozik.
- #: A konverzió alternatív formáját hajtják végre.
- 0: Egész számra és lebegőpontos számra használják. A nullák a szóköz helyett a számok kitöltésére szolgálnak.
- Szélesség: Opcionális * vagy egész érték, amelyet a minimális szélesség mező megadásához használnak.
- Pontosság: Választható mező, amely a. * vagy egész szám, vagy semmi a pontosság megadásához.
- Hossz: Opcionális hosszmódosító, amely megadja az argumentum méretét.
- Specifier: Konverziós formátum-specifikáló. A rendelkezésre álló formátum-meghatározók a következők:
Formátummeghatározó Leírás % Nyomat% c Egyetlen karaktert ír s Karakterláncot ír d vagy i Az aláírt egész számot decimális ábrázolássá alakítja o Az előjel nélküli egész számot oktális ábrázolássá alakítja X vagy x Aláíratlan egész számot hexadecimális ábrázolássá alakítja u Az aláíratlan egész számot decimális ábrázolássá alakítja F vagy f A lebegőpontos számot tizedesre konvertálja E vagy e A lebegőpontos számot decimális exponens jelöléssé alakítja A vagy a A lebegőpontos számot hexadecimális kitevővé konvertálja G vagy g A lebegőpontos számot decimális vagy decimális exponens jelöléssé alakítja n Visszaadja a függvénynek a hívás által eddig írt karakterek számát. Az eredményt arra az értékre írják, amelyre az argumentum rámutat o Ír egy megvalósítás által definiált karaktersorozatot, amely meghatároz egy mutatót.
Tehát a formátummeghatározó általános formátuma:% (zászlók) (szélesség) (. pontosság) (hossz) specifikátor
- vlist: Az írandó adatokat tartalmazó argumentumok listája.
vswprintf () Visszatérési érték
- Sikeres esetben az vswprintf () függvény visszaadja a beírt széles karakterek számát, kivéve a befejező null széles karaktert.
- Negatív értéket adunk vissza, ha bármilyen kódolási hiba lép fel, vagy ha a létrehozandó karakterek száma egyenlő vagy nagyobb, mint a buf_size.
Példa: Hogyan működik az vswprintf () függvény?
#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; )
A program futtatásakor a következőket írjuk az example.txt fájlba:
Arab betűk: ڄ ڱ ڪ ڣ ڄ