C ++ vswprintf () - C ++ standartinė biblioteka

Funkcija vswprintf () C ++ naudojama norint suformatuotą plačią eilutę rašyti į plačios eilutės buferį.

Funkcija vswprintf () yra apibrėžta antraštės faile.

vswprintf () prototipas

 int vswprintf (wchar_t * buferis, size_t buf_size, const wchar_t * formatas, va_list vlist);

Funkcija „vswprintf ()“ rašo plačią eilutę, nurodytą formatu, į plačią eilutės buferį. Į (buf_size-1)buferį įrašoma daugiausia platus simbolių skaičius, po kurio rašomas nulio platus simbolis.

Plataus eilutės formate gali būti formato specifikatoriai, prasidedantys%, kurie yra pakeisti kintamųjų, perduotų kaip sąrašo vlist, vertėmis.

vswprintf () parametrai

  • buferis: žymeklis plačiam eilutės buferiui, kad būtų parašytas rezultatas.
  • buf_size: Didžiausias rašomų plačių simbolių skaičius, įskaitant baigiamąjį nulį plačią simbolį.
  • formatas: nerodomos plačios eilutės, kuri parašyta buferyje, žymeklis. Ją sudaro simboliai ir neprivalomi formato specifikatoriai, prasidedantys%. Formato specifikatoriai pakeičiami atitinkamų kintamųjų reikšmėmis, atitinkančiomis formatą.
    Formato specifikatoriuje yra šios dalys:
    • Pirmaujantis% ženklas
    • Žymos: pasirinktinai viena ar kelios žymos, modifikuojančios konversijos elgseną.
      • -: kairė pateisina rezultatą lauke. Pagal nutylėjimą tai yra teisinga.
      • +: Rezultato ženklas pridedamas prie vertės pradžios, net jei teigiami rezultatai.
      • Erdvė: jei nėra ženklo, rezultato pradžioje pridedama tarpas.
      • #: Atliekama alternatyvi konversijos forma.
      • 0: Jis naudojamas sveikam skaičiui ir slankiojo kablelio skaičiui. Skaičių užpildymui vietoj tarpo naudojami priekiniai nuliai.
    • Plotis: neprivaloma * arba sveiko skaičiaus vertė, naudojama nurodyti minimalaus pločio lauką.
    • Tikslumas: neprivalomas laukas, kurį sudaro a. po kurio * arba sveikas skaičius arba nieko, kad būtų galima nurodyti tikslumą.
    • Ilgis: pasirinktinis ilgio modifikatorius, nurodantis argumento dydį.
    • Specifikatorius: konversijos formato specifikatorius. Galimi formatų parametrai yra šie:
    Formato specifikatoriai
    Formato specifikatorius apibūdinimas
    % Spausdina%
    c Rašo vieną veikėją
    s Rašo simbolių eilutę
    d arba aš Konvertuoja pasirašytą sveikąjį skaičių į dešimtainį vaizdą
    o Konvertuoja nepasirašytą sveikąjį skaičių į aštuonetinį vaizdą
    X arba x Konvertuoja nepasirašytą sveikąjį skaičių į šešioliktainį vaizdą
    u Konvertuoja nepasirašytą sveikąjį skaičių į dešimtainį vaizdą
    F arba f Konvertuoja slankiojo kablelio skaičių dešimtainiu skaičiumi
    E arba e Konvertuoja slankiojo kablelio skaičių dešimtainio laipsnio rodikliu
    A arba a Konvertuoja slankiojo kablelio skaičių į šešioliktainį rodiklį
    G arba g Konvertuoja slankiojo kablelio skaičių dešimtainiu arba dešimtainiu laipsnių rodikliu
    n Grąžina iki šiol šiuo skambučiu parašytų simbolių skaičių funkcijai. Rezultatas įrašomas į argumento nurodytą vertę
    p Rašo įgyvendinimo apibrėžtą simbolių seką, apibrėžiančią žymeklį.

    Taigi bendras formato specifikatoriaus formatas yra:
     % (vėliavos) (plotis) (. tikslumas) (ilgis) specifikatorius
  • vlist: argumentų, kuriuose yra duomenys, kuriuos reikia parašyti, sąrašas.

vswprintf () Grąžinimo vertė

  • Jei pavyks, funkcija vswprintf () grąžina parašytų plačių simbolių skaičių, išskyrus baigiamąjį nulinį plačiąjį simbolį.
  • Neigiama vertė grąžinama, jei įvyksta kokių nors kodavimo klaidų arba jei sugeneruojamų simbolių skaičius buvo lygus arba didesnis nei buf_size.

Pavyzdys: Kaip veikia vswprintf () funkcija?

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

Paleidus programą, example.txt bus parašyta:

 Arabiški laiškai: ڄ ڱ ڪ ڣ ڄ

Įdomios straipsniai...