_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s
Преобразование целое число в строку.эти версии _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.
errno_t _itoa_s(
int value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _i64toa_s(
__int64 value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _ui64toa_s(
unsigned _int64 value,
char *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _itow_s(
int value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _i64tow_s(
__int64 value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
errno_t _ui64tow_s(
unsigned __int64 value,
wchar_t *buffer,
size_t sizeInCharacters,
int radix
);
template <size_t size>
errno_t _itoa_s(
int value,
char (&buffer)[size],
int radix
); // C++ only
template <size_t size>
errno_t _itow_s(
int value,
wchar_t (&buffer)[size],
int radix
); // C++ only
Параметры
[входящий] value
Число для преобразования.[исходящий] buffer
заполнено с результатом преобразования.[входящий] sizeInCharacters
Размер буфера (в символах) или расширенных символах единый-байта.[входящий] radix
Base value; что должно быть в диапазоне 2-36.
Возвращаемое значение
Нуль, если выполнение прошло успешно; код ошибки при сбое.Если следующие условия применяются, то функция вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.
Условия возникновения ошибок
value |
Буфер |
sizeInCharacters |
root |
Return |
---|---|---|---|---|
any |
NULL |
any |
any |
EINVAL |
any |
any |
<=0 |
any |
EINVAL |
any |
any |
Длина строки результата для <= |
any |
EINVAL |
any |
any |
any |
radix 2 Или < radix > 36 |
EINVAL |
Вопросы безопасности
Эти функции могут создавать, если Нарушение прав доступа buffer не указывает на допустимый памяти и нет NULLили, если длина буфера не является достаточно долго хранения строки результата.
Заметки
Кроме параметров и возвращаемого значения _itoa_s функции имеют одну и ту же поведение, что и соответствовать менее безопасные версии.
В C++ с помощью этих функций упрощает перегрузками шаблона; перегруженные методы могут определять длина буфера, автоматически (что устраняет необходимость указать аргумент size) и они могут автоматически заменять старые, non-безопасные функции с их новыми, безопасный копиями.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.
Отладочной версии этих функций сначала заполняют буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.
Сопоставления подпрограммы Родов-Текста
Подпрограмма Tchar.h |
Не указанные _UNICODE и _MBCS |
Указанный символ _MBCS |
Указанный _UNICODE |
---|---|---|---|
_itot_s |
_itoa_s |
_itoa_s |
_itow_s |
_i64tot_s |
_i64toa_s |
_i64toa_s |
_i64tow_s |
_ui64tot_s |
_ui64toa_s |
_ui64toa_s |
_ui64tow_s |
Требования
Процедура |
Обязательный заголовок |
---|---|
_itoa_s |
<stdlib.h> |
_i64toa_s |
<stdlib.h> |
_ui64toa_s |
<stdlib.h> |
_itow_s |
<stdlib.h> OR <wchar.h> |
_i64tow_s |
<stdlib.h> OR <wchar.h> |
_ui64tow_s |
<stdlib.h> OR <wchar.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Пример
// crt_itoa_s.c
#include <stdlib.h>
#include <string.h>
int main( void )
{
char buffer[65];
int r;
for( r=10; r>=2; --r )
{
_itoa_s( -1, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for( r=10; r>=2; --r )
{
_i64toa_s( -1L, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for( r=10; r>=2; --r )
{
_ui64toa_s( 0xffffffffffffffffL, buffer, 65, r );
printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
}
}
Output
base 10: -1 (2 chars)
base 9: 12068657453 (11 chars)
base 8: 37777777777 (11 chars)
base 7: 211301422353 (12 chars)
base 6: 1550104015503 (13 chars)
base 5: 32244002423140 (14 chars)
base 4: 3333333333333333 (16 chars)
base 3: 102002022201221111210 (21 chars)
base 2: 11111111111111111111111111111111 (32 chars)
base 10: -1 (2 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)
base 10: 18446744073709551615 (20 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)
Эквивалент в .NET Framework
System:: Преобразование:: ToString