精华内容
下载资源
问答
  • 怎样将数字转换为字符串?

    千次阅读 2014-07-18 21:10:00
    C语言提供了几个标准库函数,可以任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数整数转换为字符串的一个例子: # include # include void main (void); void main ...

    C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转换为字符串的一个例子:

    # include <stdio. h>
    # include <stdlib. h>

    void main (void);
    void main (void)
    {
        int num = 100;
        char str[25];
        itoa(num, str, 10);
        printf("The number 'num' is %d and the string 'str' is %s. \n" ,
                           num, str);
    }
      
       itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数。在上例中,转换基数为10。

        下列函数可以将整数转换为字符串:
    ----------------------------------------------------------
        函数名                  作  用
    ----------------------------------------------------------
        itoa()                将整型值转换为字符串
        itoa()                将长整型值转换为字符串
        ultoa()               将无符号长整型值转换为字符串
    ----------------------------------------------------------
        请注意,上述函数与ANSI标准是不兼容的。能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数,请看下例:    
    #include<stdio.h>  
    # include <stdlib. h>

    void main (void);
    void main (void)
    {
        int num = 100;
        char str[25];
        sprintf(str, " %d" , num);
       printf ("The number 'num' is %d and the string 'str' is %s. \n" ,
                              num, str);

    }
     
        在将浮点型数字转换为字符串时,需要使用另外一组函数。以下是用fcvt()函数将浮点型值转换为字符串的一个例子: 

    # include <stdio. h>
    # include <stdlib. h>

    void main (void);
    void main (void)
    {
        double num = 12345.678;
        char * sir;
        int dec_pl, sign, ndigits = 3; /* Keep 3 digits of precision. * /
        str = fcvt(num, ndigits, &dec-pl, &sign); /* Convert the float
                                                     to a string. * /
        printf("Original number; %f\n" , num) ;  /* Print the original
                                                     floating-point
                                                        value. * /
        printf ("Converted string; %s\n",str);    /* Print the converted
                                                    string's value. * /
        printf ("Decimal place: %d\n" , dec-pi) ; /* Print the location of
                                      

    展开全文
  • 字符串:怎样转换字符串为数字类型? (转)[@more@]字符串:怎样转换字符串...当将字符转换为数值类型时, 有一项东西你不允许忽略:转换可能因为你正在转换的字符串可能不包含有效的数字表示法而失败 例如, 如果...
    字符串:怎样转换字符串为数字类型? (转)[@more@]

    字符串:怎样转换字符串为数字类型?


    当将字符串转换为数值类型时, 有一项东西你不允许忽略:
    转换可能因为你正在转换的字符串可能不包含有效的数字表示法而失败

    例如, 如果你想将"Hello"转换为数字, 转换将失败

    老的C方法(不赞成)

    许多人用atoi(), atof() 和这个“家族”中的其它函数. 它们方便应用,但是有一个重要的缺点:
    在转换失败和转换字符串"0"时都返回0, 这样使得一致性错误检查变得几乎不可能。 为了完整性我们给出了小段代码:

     

    代码:
    --------------------------------------------------------------------------------
      const char* str_int = "777";
      const char* str_float = "333.3";
      int i = atoi(str_int);
      float f = atof(str_float);
    --------------------------------------------------------------------------------


    一个更好的办法:

    更有一点复杂, 更遗一致的办法是利用sscanf()

    代码:
    --------------------------------------------------------------------------------
      const char* str_int = "777";
      const char* str_float = "333.3";
      int i;
      float f;
      if(EOF == sscanf(str_int, "%d", &i)){
      //错误
      }
      if(EOF == sscanf(str_float, "%f", &f)){
      //错误
      }
    --------------------------------------------------------------------------------

    Since sscanf() takes a const char* parameter, you can directly use a CString with it:
    因为sscanf()用const char* 作为参数, 所以你可以直接用CString作参数:

    代码:
    --------------------------------------------------------------------------------
      CString str_int("777");
      if(EOF == sscanf(str_int, "%d", &i)){
      //error
      }
    --------------------------------------------------------------------------------

    小心格式描述符(如本例中的"%d")。 sscanf()没有办法检查格式描述符与传递变量的类型匹配与否。如果不匹配你将得到不可预期的结果。 同样注意sscanf()可以一次从字符串中提取一个或多个数值。 详细信息请查阅MSDN。

     

    C++ 方法


    如下的例子展示了利用标准C++类的来完成这个任务的模板函数

    代码:
    --------------------------------------------------------------------------------
    #include
    #include
    #include

    template
    bool from_string(T &t,
      const std::string &s,
      std::ios_base & (*f)(std::ios_base&))
    {
      std::istringstream iss(s);
      return !(iss>>f>>t).fail();
    }

    int main()
    {
      int i;
      float f;
      // from_string()的第三个参数应为如下中的一个
      // one of std::hex, std::dec 或 std::oct
      if(from_string(i, std::string("ff"), std::hex)){
      std::cout<  }
      else{
      std::cout<  }
      if(from_string(f,
      std::string("123.456"),
      std::dec))
      {
      std::cout<  }
      else{
      std::cout<  }
      return 0;
    }

    /* 输出:
    255
    123.456
    */
    --------------------------------------------------------------------------------

    这个方法不仅仅非常别致, 而且也是类型安全的, 因为编译器在编译时会根据操作数的类型将挑选适当的std::istringstream ::operator >>()。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993440/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10752043/viewspace-993440/

    展开全文
  • 将字符串转换为数值类型时, 有一项东西你不允许忽略:转换可能因为你正在转换的字符串可能不包含有效的数字表示法而失败例如, 如果你想将"Hello"转换为数字, 转换将失败老的C方法(不赞成)许多人用atoi(), ...

    字符串:怎样转换字符串为数字类型?


    当将字符串转换为数值类型时, 有一项东西你不允许忽略:
    转换可能因为你正在转换的字符串可能不包含有效的数字表示法而失败

    例如, 如果你想将"Hello"转换为数字, 转换将失败

    老的C方法(不赞成)

    许多人用atoi(), atof() 和这个“家族”中的其它函数. 它们方便应用,但是有一个重要的缺点:
    在转换失败和转换字符串"0"时都返回0, 这样使得一致性错误检查变得几乎不可能。 为了完整性我们给出了小段代码:

     

    代码:
    --------------------------------------------------------------------------------
       const char* str_int = "777";
       const char* str_float = "333.3";
       int i = atoi(str_int);
       float f = atof(str_float);
    --------------------------------------------------------------------------------


    一个更好的办法:

    更有一点复杂, 更遗一致的办法是利用sscanf()

    代码:
    --------------------------------------------------------------------------------
       const char* str_int = "777";
       const char* str_float = "333.3";
       int i;
       float f;
       if(EOF == sscanf(str_int, "%d", &i)){
          //错误
       }
       if(EOF == sscanf(str_float, "%f", &f)){
          //错误
       }
    --------------------------------------------------------------------------------

    Since sscanf() takes a const char* parameter, you can directly use a CString with it:
    因为sscanf()用const char* 作为参数, 所以你可以直接用CString作参数:

    代码:
    --------------------------------------------------------------------------------
       CString str_int("777");
       if(EOF == sscanf(str_int, "%d", &i)){
          //error
       }
    --------------------------------------------------------------------------------

    小心格式描述符(如本例中的"%d")。 sscanf()没有办法检查格式描述符与传递变量的类型匹配与否。如果不匹配你将得到不可预期的结果。 同样注意sscanf()可以一次从字符串中提取一个或多个数值。 详细信息请查阅MSDN。

     

    C++ 方法


    如下的例子展示了利用标准C++类的来完成这个任务的模板函数

    代码:
    --------------------------------------------------------------------------------
    #include <string>
    #include <sstream>
    #include <iostream>

    template <class T>
    bool from_string(T &t,
                     const std::string &s,
                     std::ios_base & (*f)(std::ios_base&))
    {
       std::istringstream iss(s);
       return !(iss>>f>>t).fail();
    }

    int main()
    {
       int i;
       float f;
       // from_string()的第三个参数应为如下中的一个
       // one of std::hex, std::dec 或 std::oct
       if(from_string<int>(i, std::string("ff"), std::hex)){
          std::cout<<i<<std::endl;
       }
       else{
          std::cout<<"from_string failed"<<std::endl;
       }
       if(from_string<float>(f,
                                   std::string("123.456"),
                                   std::dec))
       {
          std::cout<<f<<std::endl;
       }
       else{
          std::cout<<"from_string failed"<<std::endl;
       }
       return 0;
    }

    /* 输出:
    255
    123.456
    */
    --------------------------------------------------------------------------------

    这个方法不仅仅非常别致, 而且也是类型安全的, 因为编译器在编译时会根据操作数的类型将挑选适当的std::istringstream ::operator >>()。

    展开全文
  • 字符串:怎样将数字类型转换为字符串 (转)[@more@]字符串:怎样将数字类型转换为字符串 老的C方法(不赞成) 代码:---------------------------------------------------...
    字符串:怎样将数字类型转换为字符串 (转)[@more@]

    字符串:怎样将数字类型转换为字符串

    老的C方法(不赞成)

    代码:
    --------------------------------------------------------------------------------
      char *c[10];  // 完全足够大-不要忘了为'/0'预留额外的字节
      int i = 1234;
      sprintf(c, "%d", i);
    --------------------------------------------------------------------------------

    更多的信息参见MSDN中的sprintf()


    利用CString

    代码:
    --------------------------------------------------------------------------------
      int i = 1234;
      CString cs;
      cs.Format("%d", i);
    --------------------------------------------------------------------------------

    这个格式描述符同sprintf()中的一样,参见MSDN中的CString文档--它相当的直接。

    一句警告: 格式描述符 ("%d")和实际传递的参数的不匹配将导致不能预期的结果, 这对sprintf()和CString::Format()两者都一样。

    C++ 方法:

    如下的例子展示了利用标准C++类的来完成这个任务的模板函数

    代码:
    --------------------------------------------------------------------------------
    #include
    #include
    #include

    template
    std::string to_string(T t, std::ios_base & (*f)(std::ios_base&))
    {
      std::ostringstream oss;
      oss << f << t;
      return oss.str();
    }

    int main()
    {
      // to_string()的第二个参数应为如下中的一个
      // std::hex, std::dec 或 std::oct
      std::cout<(123456, std::hex)<<:endl>  std::cout<(123456, std::oct)<<:endl>  return 0;
    }

    /* 输出:
    1e240
    361100
    */
    --------------------------------------------------------------------------------

    这个方法不仅仅非常别致, 而且也是类型安全的, 因为编译器在编译时会根据操作数的类型将挑选适当的std::ostringstream ::operator <

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993439/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10752043/viewspace-993439/

    展开全文
  • 将字符转换为数字

    2011-10-11 18:53:00
    (或者:怎样只用4行代码编写出一个从字符串到长整形的函数?) 想法: 在不考虑负数的情况下,生成整数的基本做法就是不断做乘法,其实就是一个最基本的多项式: 12345 = 1*10^4+2*10^3+3*10^2+4*10+5 = 10*(10*...
  • 数字转换为字符串? ... C语言提供了几个标准库函数,可以任意类型(整型、长整型、浮点型等)数字转换为字符串。以下是用itoa()函数整数转换为字符串的一个例子: # include # include
  • 将字符转换数字

    千次阅读 2015-12-11 15:02:53
    今天准备自己写一个将json转换成对象的框架,就想到了json的内存存储格式,json实质是一个字符串,顺便就想到了文本的存储,所有字符都是以ASCII码进行存储的,数字的ASCII码的值为数字值加上48。就像怎样将数字字符...
  • 字符串:怎样将数字类型转换为字符串老的C方法(不赞成)代码:-------------------------------------------------------------------------------- char *c[10]; // 完全足够大-不要忘了为/0预留额外的字节 int...
  • 有需要的小伙伴可以来看下这个转化内容了,希望对大家有所帮助哦~常见ASCII码的大小规则:0~91)数字比字母要小。如 “7”2)数字0比数字9要小,并按0到9顺序递增。...以下代码用于实现ASCII码与字符相互...
  • http://dev.csdn.net/develop/article/18/18077.shtmfrom http://www.codeguru.com/forum/showthread.php?s=&threadid=231056作者Blog:http://blog.csdn.net/bugfree/对该文的评论 Fingo ( 2003-04-3
  • 在串口通信中遇到的一个比较常见的问题就是需要把字节流转换为字符串的问题,不管是需要将接受到的数据打印到log还是需要将字符串显示到Demo上,遇到这种问题还要自己写一个转换函数太过于麻烦,那么标准库中是否有...
  • /****************************... 功能:由16进制字符转换到16进制  参数:pStrH:要转换的16进制字符,  nStrHLen:16进制字符长度  pDataB :输出参数,16进制数字 ****************************************
  • 比如说str=“ 12”(注意含空格),awk在何种情况...如果只能自动转换“12”这样的串的话,怎样用最简单的办法含空格的数字串转为数值? 需要数字的地方才可能转换。 strtonum() print str+0
  • 一个字符转换成一个整数,要求不能使用字符转换整数的库函数。 数值0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以空 输出描述: 如果是合法的数值表达则返回该...
  • 于是想出将整型转换为字符串,再逐一寻找的暴力做法,但怎样将整型变量转换为字符串变量呢,C中头文件里有atoi现成的函数可以使用,倔强的自己非要自己写一个,同样简单粗暴方法 #include<iostream> using ...
  • 怎样将"100"转换为100(2种方法) """ a = "100" #方法1: a = int(a) print(a) print(type(a)) #方法二 print(type(eval(a))) 一、python中字符串转换成数字 (方法1) 类中进行导入: import string str='555...
  • 先把数字字符串的每个数字字符转换为对应的数字,形成数字序列 再通过一定计算规则将数字序列计算得到一个整数 3、具体代码 将数字字符串转换为对应数字,可以建立数字字典,以映射的形式获得数字字符所对应的数字...
  • 现有字符串s[]=“ 2016/10/01 2016/12/23 2017/01/01 .....”,其中的...现在想在循环中使用sscanf("%d/%d%d",s,&a,&b,&c)所有日期形式的数字字符转换为数字 。问题是如何在每一次循环中跳过前面已经截取的字符串。
  • 在本文中,我展示怎样使用这些库来实现安全和自动的类型转换什么要学习 如果你已习惯了风格的转换,也许你首先会问:什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

怎样将字符转换为数字