zoukankan      html  css  js  c++  java
  • _itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s

     

    Converts an integer to a string. These are versions of _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow with security enhancements as described in Security Features in the 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
    [in] value

    Number to be converted.

    [out] buffer

    Filled with the result of the conversion.

    [in] sizeInCharacters

    Size of the buffer in single-byte characters or wide characters.

    [in] radix

    Base of value; which must be in the range 2–36.

    Zero if successful; an error code on failure. If any of the following conditions applies, the function invokes an invalid parameter handler, as described in Parameter Validation.

    Error Conditions

    value

    buffer

    sizeInCharacters

    radix

    Return

    any

    NULL

    any

    any

    EINVAL

    any

    any

    <=0

    any

    EINVAL

    any

    any

    <= length of the result string required

    any

    EINVAL

    any

    any

    any

    radix < 2 or radix > 36

    EINVAL

    Security Issues

    These functions can generate an access violation if buffer does not point to valid memory and is not NULL, or if the length of the buffer is not long enough to hold the result string.

    Except for the parameters and return value, the _itoa_s functions have the same behavior as the corresponding less secure versions.

    In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see Secure Template Overloads.

    The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use _CrtSetDebugFillThreshold.

    Generic-Text Routine Mappings

    Tchar.h routine

    _UNICODE and _MBCS not defined

    _MBCS defined

    _UNICODE defined

    _itot_s

    _itoa_s

    _itoa_s

    _itow_s

    _i64tot_s

    _i64toa_s

    _i64toa_s

    _i64tow_s

    _ui64tot_s

    _ui64toa_s

    _ui64toa_s

    _ui64tow_s

     
     
     
     
     
     
     
     

    Routine

    Required header

    _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>

    For more compatibility information, see Compatibility in the Introduction.

     
     
    // 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)
    ", r, buffer, strnlen(buffer, _countof(buffer)) );
        }
        printf( "
    " );
        for( r=10; r>=2; --r )
        {
           _i64toa_s( -1L, buffer, 65, r );
           printf( "base %d: %s (%d chars)
    ", r, buffer, strnlen(buffer, _countof(buffer)) );
        }
        printf( "
    " );
        for( r=10; r>=2; --r )
        {
           _ui64toa_s( 0xffffffffffffffffL, buffer, 65, r );
           printf( "base %d: %s (%d chars)
    ", r, buffer, strnlen(buffer, _countof(buffer)) );
        }
    }
    

      

     
     
     
    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)
    

      

  • 相关阅读:
    Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
    Deep Learning入门视频(上)_一层/两层神经网络code
    第一百五十三节,封装库--JavaScript,表单验证--备注字数验证
    第一百五十二节,封装库--JavaScript,表单验证--年月日注入
    第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全
    第一百五十节,封装库--JavaScript,表单验证--密码验证
    第一百四十九节,封装库--JavaScript,表单验证--验证用户名
    第一百四十八节,封装库--JavaScript,菜单切换
    第一百四十七节,封装库--JavaScript,滑动导航
    第一百四十六节,JavaScript,百度分享保持居中--下拉菜单
  • 原文地址:https://www.cnblogs.com/cindy-hu-23/p/3548032.html
Copyright © 2011-2022 走看看