Funkce swprintf () v C ++ se používá k zápisu formátovaného širokého řetězce do vyrovnávací paměti širokého řetězce.
Funkce swprintf () je definována v hlavičkovém souboru.
prototyp swprintf ()
int swprintf (wchar_t * buffer, size_t size, const wchar_t * format,…);
Funkce swprintf () zapíše široký řetězec, na který ukazuje formát, do vyrovnávací paměti. Maximální počet znaků, které lze zapsat, je (velikost-1).
Po napsání znaků se přidá zakončovací znak s nulovou šířkou.
Formát širokého řetězce může obsahovat specifikátory formátu začínající na%, které jsou nahrazeny hodnotami proměnných, které jsou předány funkci swprintf () jako další argumenty.
parametry swprintf ()
- buffer: Ukazatel na řetězec, který zapíše výsledek.
- size: Určete maximální počet znaků, které mají být zapsány do vyrovnávací paměti, což je velikost-1.
- formát: Ukazatel na široký řetězec zakončený hodnotou null, který je zapsán na standardní výstup. Skládá se z širokých znaků a volitelných specifikátorů formátu začínajících na%. Specifikátory formátu jsou nahrazeny hodnotami příslušných proměnných, které následují po formátu.
Specifikátor formátu má následující části:- Přední znak%
- Příznaky: Volitelný jeden nebo více příznaků, které upravují chování převodu.
- -: Vlevo zarovná výsledek v poli. Ve výchozím nastavení je to správně zarovnané.
- +: Znaménko výsledku je připojeno na začátek hodnoty, a to i pro pozitivní výsledky.
- Mezera: Pokud není žádná značka, na začátek výsledku se připojí mezera.
- #: Je provedena alternativní forma převodu.
- 0: Používá se pro celé číslo a číslo s plovoucí desetinnou čárkou. K vyplnění čísel místo mezery se používají úvodní nuly.
- Šířka: Volitelná * nebo celočíselná hodnota použitá k určení pole minimální šířky.
- Přesnost: Volitelné pole skládající se z a. následuje * nebo celé číslo nebo nic k určení přesnosti.
- Délka: Volitelný modifikátor délky, který určuje velikost argumentu.
- Specifikátor: Specifikátor formátu převodu. Dostupné specifikátory formátu jsou následující:
Specifikátor formátu Popis % Tisky% C Zapíše jeden znak s Zapíše řetězec znaků d nebo i Převede celé číslo se znaménkem na desítkové vyjádření Ó Převede celé číslo bez znaménka na osmičkovou reprezentaci X nebo x Převede celé číslo bez znaménka na šestnáctkové vyjádření u Převede celé číslo bez znaménka na desítkové vyjádření F nebo f Převede číslo s plovoucí desetinnou čárkou na desítkové vyjádření E nebo e Převede číslo s plovoucí desetinnou čárkou na desítkovou notaci exponentu A nebo a Převede číslo s plovoucí desetinnou čárkou na hexadecimální exponent G nebo g Převede číslo s plovoucí desetinnou čárkou na desítkovou nebo desítkovou notaci n Vrátí počet znaků doposud zapsaných tímto voláním funkce. Výsledek se zapíše na hodnotu, na kterou odkazuje argument p Zapíše posloupnost znaků definovanou implementací definující ukazatel.
Obecný formát specifikátoru formátu je tedy:Specifikátor% (příznaky) (šířka) (. přesnost) (délka)
- …: Další další argumenty specifikující data, která mají být zapsána. Vyskytují se v pořadí podle specifikátoru formátu.
swprintf () Vrátit hodnotu
- Při úspěchu funkce swprintf () vrací počet zapsaných znaků s výjimkou ukončovacího znaku null wide.
- Pokud došlo k chybě kódování nebo pokud byl počet generovaných znaků stejný nebo větší než velikost, je vrácena záporná hodnota.
Příklad: Jak funguje funkce 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; )
Když spustíte program, do example.txt se zapíše následující:
Některá hebrejská písmena א ב ס ד ת