Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Преобразование числа в строку
Преобразовать целое число в C-строку позволяют следующие функции:
_itoa()
и_itoa_s()
— преобразуют число типаint
в C-строку. Прототипы функций:
#include <cstdlib> /* или #include <stdlib.h> */
char *_itoa(int val, char *dest, int radix);
errno_t _itoa_s(int val, char *dest, size_t size, int radix);
В параметре val
указывается число, в параметре dest
— указатель на символьный массив, в который будет записан результат, в параметре size
— максимальный размер символьного массива dest
, а в параметре radix
— система счисления (2
, 8
, 10
или 16
). Пример использования функции _itoa_s()
:
char str[100] = {0};
int x = 255;
_itoa_s(x, str, 100, 10);
std::cout << str << std::endl; // 255
Пример вывода двоичного, восьмеричного и шестнадцатеричного значений:
char str[100] = {0};
// Двоичное значение
std::cout << _itoa(100, str, 2) << std::endl; // 1100100
// Восьмеричное значение
std::cout << _itoa(10, str, 8) << std::endl; // 12
// Шестнадцатеричное значение
std::cout << _itoa(255, str, 16) << std::endl; // ff
_ltoa()
и_ltoa_s()
— преобразуют число типаlong
в C-строку. Прототипы функций:
#include <cstdlib> /* или #include <stdlib.h> */
char *_ltoa(long val, char *dest, int radix);
errno_t _ltoa_s(long val, char *dest, size_t size, int radix);
Пример:
char str[100] = {0};
long x = 255;
_ltoa_s(x, str, 100, 10);
std::cout << str << std::endl; // 255
std::cout << _ltoa(x, str, 16) << std::endl; // ff
_ultoa()
и_ultoa_s()
— преобразуют число типаunsigned long
в C-строку. Прототипы функций:
#include <cstdlib> /* или #include <stdlib.h> */
char *_ultoa(unsigned long val, char *dest, int radix);
errno_t _ultoa_s(unsigned long val, char *dest, size_t size,
int radix);
Пример:
char str[100] = {0};
unsigned long x = 255;
_ultoa_s(x, str, 100, 10);
std::cout << str << std::endl; // 255
std::cout << _ultoa(x, str, 16) << std::endl; // ff
_i64toa()
и_i64toa_s()
— преобразуют число типа__int64
в C-строку. Прототипы функций:
#include <cstdlib> /* или #include <stdlib.h> */
char *_i64toa(__int64 val, char *dest, int radix);
errno_t _i64toa_s(__int64 val, char *dest, size_t size,
int radix);
Пример:
char str[100] = {0};
__int64 x = 255;
_i64toa_s(x, str, 100, 10);
std::cout << str << std::endl; // 255
std::cout << _i64toa(x, str, 16) << std::endl; // ff
_ui64toa()
и_ui64toa_s()
— преобразуют число типаunsigned __int64
в C-строку. Прототипы функций:
#include <cstdlib> /* или #include <stdlib.h> */
char *_ui64toa(unsigned __int64 val, char *dest, int radix);
errno_t _ui64toa_s(unsigned __int64 val, char *dest, size_t size,
int radix);
Пример:
char str[100] = {0};
unsigned __int64 x = 255;
_ui64toa_s(x, str, 100, 10);
std::cout << str << std::endl; // 255
std::cout << _ui64toa(x, str, 16) << std::endl; // ff
Преобразовать значения элементарных типов в 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
). В качестве значения функция возвращает количество символов, записанных в символьный массив. Пример преобразования целого числа в C-строку:
char buf[50] = "";
int x = 100, count = 0;
count = std::sprintf(buf, "%d", x);
std::cout << buf << std::endl; // 100
std::cout << count << std::endl; // 3
Функция 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
указывается размер буфера. В качестве значения функции возвращают количество символов, записанных в символьный массив. Пример преобразования вещественного числа в C-строку:
char buf[50] = "";
int count = 0;
double pi = 3.14159265359;
count = sprintf_s(buf, 50, "%.2f", pi);
std::cout << buf << std::endl; // 3.14
std::cout << count << std::endl; // 4
_locale_t locale = _create_locale(LC_NUMERIC, "dutch");
_sprintf_s_l(buf, 50, "%.3f", locale, pi);
std::cout << buf << std::endl; // 3,142
_free_locale(locale);
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов