Функција свпринтф () у језику Ц ++ користи се за писање форматираног широког низа у широки међуспремник низа.
Функција свпринтф () је дефинисана у датотеци заглавља.
прототип свпринтф ()
инт свпринтф (вцхар_т * међуспремник, сизе_т сизе, цонст вцхар_т * формат,…);
Функција свпринтф () уписује у ме успремник широки низ на који указује формат. Максималан број знакова који се могу написати је (величина-1).
Након писања знакова додаје се завршавајући нулл широк знак.
Широки формат низа може садржати спецификаторе формата који почињу са% који се замењују вредностима променљивих које се прослеђују функцији свпринтф () као додатни аргументи.
свпринтф () Параметри
- бафер: показивач на бафер низа за писање резултата.
- величина: Наведите максимални број знакова који ће се уписати у међуспремник, а то је величина-1.
- формат: показивач на нулто завршени широки низ који се записује у стдоут. Састоји се од широких знакова, заједно са опционим спецификаторима формата који почињу са%. Спецификатори формата замењују се вредностима одговарајућих променљивих које следе формат.
Спецификатор формата има следеће делове:- Водећи знак%
- Заставе: Опционално једна или више заставица које мењају понашање конверзије.
- -: Лево оправдајте резултат у пољу. Подразумевано је исправно оправдано.
- +: Знак резултата је везан за почетак вредности, чак и за позитивне резултате.
- Размак: Ако нема знака, размак се додаје на почетак резултата.
- #: Изводи се алтернативни облик конверзије.
- 0: Користи се за цео број и број са покретном тачком. Водеће нуле се користе за попуњавање бројева уместо размака.
- Ширина: Опционална * или целобројна вредност која се користи за одређивање поља минималне ширине.
- Прецизност: Опционо поље које се састоји од а. након чега следи * или цео број или ништа за прецизирање.
- Дужина: Опционални модификатор дужине који одређује величину аргумента.
- Спецификатор: Спецификатор формата конверзије. Доступни спецификатори формата су следећи:
Спецификатор формата Опис % Принтс% ц Писе један лик с Записује низ знакова д или и Претвара потписани цели број у децимални приказ о Претвара непотписани цели број у осмински приказ Кс или к Претвара непотписани цели број у хексадецимални приказ у Претвара непотписани цијели број у децимални приказ Ф или ф Претвара број са покретном зарезом у децимални приказ Е или е Претвара број с помичном зарезом у запис децималног експонента А или а Претвара број са покретном зарезом у хексадецимални експонент Г или г. Претвара број с помичном зарезом у децимални или децимални запис експонента н Враћа број знакова до сада написаних овим позивом функцији. Резултат се записује у вредност на коју указује аргумент стр Пише секвенцу карактера дефинисану имплементацијом која дефинише показивач.
Дакле, општи формат спецификатора формата је:Спецификатор% (заставице) (ширина) (прецизност) (дужина)
- …: Остали додатни аргументи који одређују податке који се уписују. Јављају се у низу према спецификатору формата.
свпринтф () Повратна вредност
- Успехом, функција свпринтф () враћа број написаних знакова, искључујући завршавајући нулл широк знак.
- Ако је дошло до грешке у кодирању или ако је број генерисаних знакова једнак или већи од величине, враћа се негативна вредност.
Пример: Како функционише функција свпринтф ()?
#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; )
Када покренете програм, у екампле.ткт ће бити записано следеће:
Нека хебрејска слова א ב ס ד ת