zoukankan      html  css  js  c++  java
  • _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明

    _itoa

    功能:把一整数转换为字符串

    用法:char * _itoa(int value, char *string, int radix);

      详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后再保存在string中.

      备注:该函数的头文件是"stdlib.h"

      程序例:

      #include <stdlib.h>

      #include <stdio.h>

      int main()

      {

      int number = 123456;

      char string[25];

      _itoa(number, string, 10);

      printf("integer = %d string = %s\n", number, string);

      return 0;

      }

      注释:编译系统:VC++6.0,TC不支持。


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bufrfish/archive/2008/11/03/3209167.aspx

    atoi、atof、_itoa、_itow 函数使用

    atoi、atof、itoa、itow函数是windows平台下实现字符串与数值相互转换的函数。Linux平台下请使用标准库中的sprintf与sscanf函数。


    atoi函数

    原型:int atoi( const char *string );

    ASCII to integer

    作用:将字符串转为integer类型

    atof函数

    原型:double atof( const char *string );

    ASCII to float

    作用:将字符串转为double类型

    对于以上函数,若字符串无法转化为合法的数值类型,函数将返回0 。

    使用范例(来自MSDN):

    1#include <stdlib.h>
    2#include <stdio.h>
    3
    4void main( void )
    5{
    6   char *s; double x; int i; long l;
    7
    8    printf( " testing atoi,atof,atol function :\n" ) ;
    9    s = "   -2309.12E-15";    /**//* Test of atof */
    10    x = atof( s );
    11    printf( "atof test: ASCII string: %s\tfloat:   %e\n", s, x );
    12
    13    s = "7.8912654773d210";  /**//* Test of atof */
    14    x = atof( s );
    15    printf( "atof test: ASCII string: %s\tfloat:   %e\n", s, x );
    16
    17    s = "   -9885 pigs";      /**//* Test of atoi */
    18    i = atoi( s );
    19    printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );
    20
    21    s = "98854 dollars";     /**//* Test of atol */
    22    l = atol( s );
    23    printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
    24}
    25

    输出:

    atof test: ASCII string:   -2309.12E-15 float: -2.309120e-012

    atof test: ASCII string: 7.8912654773d210 float: 7.891265e+210

    atoi test: ASCII string:   -9885 pigs    integer: -9885

    atol test: ASCII string: 98854 dollars    long: 98854


    _itoa函数

    原型:char *_itoa( int value, char *str, int radix );//2<=radix<=36

    Integer to ASCII

    作用:将Integer类型转换为radix进制,然后以ASCII字符串的形式存放在str中

    _itow函数

    wchar_t * _itow( int value, wchar_t *str, int radix ); //2<=radix<=36

    Integer to Wide Char

    作用:将Integer类型转换为radix进制,然后以宽字符串的形式存放在str中

        以上2个函数均有安全隐患(当字符数组长度不足保存结果时会导致缓冲区溢出),在vs2008中编译时会有警告。推荐使用它们的安全版本—— _itoa_s与_itow_s 。


    _itoa_s 函数原型如下:

    errno_t _itoa_s(

       int value,

       char *buffer,

       size_t sizeInCharacters, //存放结果的字符数组长度

       int radix

    );

    当转换的结果长度比sizeInCharacters变量大时,由于出现access violation,函数将马上终止,而_itoa函数将继续运行。

    使用范例(来自MSDN):

    Code
    1#include<string.h>
    2#include<stdlib.h>
    3#include<stdio.h>
    4
    5int main( void )
    6{
    7   char buffer[65];
    8   int r;
    9    printf( "test _itoa function ! \n" ) ;
    10   for( r=10; r>=2; --r )
    11   {
    12      _itoa( -1, buffer, r ); // C4996
    13     // Note: _itoa is deprecated; consider using _itoa_s instead
    14      printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
    15    }
    16
    17    printf( "test _itoa_s function ! \n " ) ;
    18   for( r=10; r>=2; --r )
    19   {
    20       _itoa_s( -1, buffer, 65, r );
    21       printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
    22    }
    23}

    24

    输出:

    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: 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)

  • 相关阅读:
    yolo_to_onnx ValueError: need more tan 1 value to unpack
    yolo_to_onnx killed
    C++ 实现二维矩阵的加减乘等运算
    Leetcode 1013. Partition Array Into Three Parts With Equal Sum
    Leetcode 1014. Best Sightseeing Pair
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 219. Contains Duplicate II
    Leetcode 890. Find and Replace Pattern
    Leetcode 965. Univalued Binary Tree
    Leetcode 700. Search in a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/lidabo/p/2584706.html
Copyright © 2011-2022 走看看