Форматирование С-строк

Выполнить форматирование C-строки, а также преобразовать значения элементарных типов в C-строку можно с помощью функции sprintf(). Существует также функция _sprintf_l(), которая позволяет дополнительно задать локаль. Прототипы функций:

#include <cstdio> /* или #include <stdio.h> */
int sprintf(char *buf, const char *format, ...);
int _sprintf_l(char *buf, const char *format, _locale_t locale, ...);

В параметре format указывается строка специального формата. Внутри этой строки можно указать обычные символы и спецификаторы формата, начинающиеся с символа %. Спецификаторы формата совпадают со спецификаторами, используемыми в функции printf() (см. разд. 2.9). Вместо спецификаторов формата подставляются значения, указанные в качестве параметров. Количество спецификаторов должно совпадать с количеством переданных параметров. Результат записывается в буфер, адрес которого передается в первом параметре (buf). В качестве значения функция возвращает количество символов, записанных в символьный массив. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char buf[50] = "";
int x = 100, count = 0;
count = std::sprintf(buf, "x = %d", x);
std::cout << buf << std::endl;      // x = 100
std::cout << count << std::endl;    // 7

Функция sprintf() не производит никакой проверки размера буфера, поэтому возможно переполнение буфера. Вместо функции sprintf() следует использовать функцию sprintf_s() или _sprintf_s_l(). Прототипы функций:

#include <cstdio> /* или #include <stdio.h> */
int sprintf_s(char *buf, size_t sizeInBytes, const char *format, ...);
int _sprintf_s_l(char *buf, size_t sizeInBytes, const char *format,
                 _locale_t locale, ...);

Параметры buf и format аналогичны параметрам функции sprintf(). В параметре sizeInBytes указывается размер буфера. В качестве значения функции возвращают количество символов, записанных в символьный массив. Пример:

std::setlocale(LC_ALL, "Russian_Russia.1251");
char buf[50] = "";
int count = 0;
double pi = 3.14159265359;
count = sprintf_s(buf, 50, "pi = %.2f", pi);
std::cout << buf << std::endl;      // pi = 3,14
std::cout << count << std::endl;    // 9

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов