Ц ++ всвпринтф () - Ц ++ стандардна библиотека

Функција всвпринтф () у језику Ц ++ користи се за писање форматираног широког низа у широки међуспремник низа.

Функција всвпринтф () је дефинисана у датотеци заглавља.

прототип всвпринтф ()

 инт всвпринтф (вцхар_т * бафер, сизе_т буф_сизе, цонст вцхар_т * формат, ва_лист влист);

Функција всвпринтф () уписује широки низ на који указује формат према широком баферу низа. У (buf_size-1)бафер се уписује највише широких знакова, а иза њих слиједи нулл широк знак.

Широки формат низа може садржати спецификаторе формата који почињу са% који се замењују вредностима променљивих које се прослеђују као списак влист.

всвпринтф () Параметри

  • бафер: показивач на широки бафер низа за писање резултата.
  • буф_сизе: Максималан број широких знакова за писање, укључујући завршни нулл широки знак.
  • формат: показивач на нулто завршени широки низ који се записује у међуспремник. Састоји се од знакова, заједно са опционим спецификаторима формата који почињу са%. Спецификатори формата замењују се вредностима одговарајућих променљивих које следе формат.
    Спецификатор формата има следеће делове:
    • Водећи знак%
    • Заставе: Опционално једна или више заставица које мењају понашање конверзије.
      • -: Лево оправдајте резултат у пољу. Подразумевано је исправно оправдано.
      • +: Знак резултата је везан за почетак вредности, чак и за позитивне резултате.
      • Размак: Ако нема знака, размак се додаје на почетак резултата.
      • #: Изводи се алтернативни облик конверзије.
      • 0: Користи се за цео број и број са покретном тачком. Водеће нуле се користе за попуњавање бројева уместо размака.
    • Ширина: Опционална * или целобројна вредност која се користи за одређивање поља минималне ширине.
    • Прецизност: Опционо поље које се састоји од а. након чега следи * или цео број или ништа за прецизирање.
    • Дужина: Опционални модификатор дужине који одређује величину аргумента.
    • Спецификатор: Спецификатор формата конверзије. Доступни спецификатори формата су следећи:
    Спецификатори формата
    Спецификатор формата Опис
    % Принтс%
    ц Писе један лик
    с Записује низ знакова
    д или и Претвара потписани цели број у децимални приказ
    о Претвара непотписани цели број у осмински приказ
    Кс или к Претвара непотписани цели број у хексадецимални приказ
    у Претвара непотписани цијели број у децимални приказ
    Ф или ф Претвара број са покретном зарезом у децимални приказ
    Е или е Претвара број с помичном зарезом у запис децималног експонента
    А или а Претвара број са покретном зарезом у хексадецимални експонент
    Г или г. Претвара број с помичном зарезом у децимални или децимални запис експонента
    н Враћа број знакова до сада написаних овим позивом функцији. Резултат се записује у вредност на коју указује аргумент
    стр Пише секвенцу карактера дефинисану имплементацијом која дефинише показивач.

    Дакле, општи формат спецификатора формата је:
     Спецификатор% (заставице) (ширина) (прецизност) (дужина)
  • влист: Листа аргумената који садрже податке за писање.

всвпринтф () Повратна вредност

  • Ако успе, функција всвпринтф () враћа број написаних широких знакова, искључујући завршавајући нулл широк знак.
  • Негативна вредност се враћа ако дође до било какве грешке у кодирању или ако је број генерисаних знакова једнак или већи од буф_сизе.

Пример: Како функционише функција всвпринтф ()?

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

Када покренете програм, у екампле.ткт ће бити записано следеће:

 Арапска слова: ڄ ڱ ڪ ڣ ڄ

Занимљиви Чланци...