zoukankan      html  css  js  c++  java
  • C++字符串转数字,数字转字符串

    1. 字符串转数字

    如将“32”转为32,将“3.1415”转为3.1415,将“567283”转为567283。使用:

    //Convert string to integer, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/
    int atoi ( const char * str );
    //Convert string to double, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atof/
    double atof ( const char * str ); 
    // Convert string to long integer,more @http://www.cplusplus.com/reference/clibrary/cstdlib/atol/
    long int atol ( const char * str );  
    //Read formatted data from string, more @http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/
    int sscanf ( const char * str, const char * format, ...);

    Example1:

    /* atoi,atof,atol example */
    #include <stdio.h>
    #include <stdlib.h>
    int main ()
    {
      int a;float b;long c;
      a=atoi("32");
      b=atof("3.1415");
      c=atol("567283");
      printf ("%d,%f,%d",a,b,c); 
      return 0;
    }
    
    Output:
    32,3.141500,567283

    Example2:

    /* sscanf example */
    #include <stdio.h>
    int main ()
    {
      int a;float b;long c;
      sscanf ("32,3.1415,567283","%d,%f,%d",&a,&b,&c);
      printf ("%d,%f,%d",a,b,c);   
      return 0;
    }
    
    Output:
    32,3.141500,567283

    2. 数字字符串

    如将32转为“32”,将3.1415转为“3.1415”,将567283转为“567283”。使用:

    //Write formatted data to string, more @http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
    int sprintf ( char * str, const char * format, ... );
    //Convert integer to string (non-standard function), more @http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
    //This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.
    //A standard-compliant alternative for some cases may be sprintf.
    char *  itoa ( int value, char * str, int base );

    Example3:

    Example3
    
    /* sprintf example */
    #include <stdio.h>
    int main ()
    {
      char a[10],b[10],c[10];
      sprintf(a, "%d", 32);
      sprintf(b, "%f", 3.1415);
      sprintf(c, "%d", 567283);
      printf("%s,%s,%s",a,b,c);
      return 0;
    }
    
    Output:
    32,3.141500,567283

    3. 使用stringstream进行字符串与数字的转换

    这里给出一个例子,更多 @http://www.cppblog.com/Sandywin/archive/2008/08/27/27984.htmlhttp://blog.csdn.net/touzani/article/details/1623850

    Example4:

    Example4
    
    // using stringstream constructors.
    #include <iostream>
    #include <sstream>
    using namespace std;
    int main () 
    {
      int a;float b;long c;
      char d[10],e[10],f[10];
    
      /* string to number */
      stringstream ss;
      ss << "32";
      ss >> a;
      ss.clear();
    
      ss << "3.1415";
      ss >> b;
      ss.clear();
    
      ss << "567283";
      ss >> c;
      ss.clear();
    
      cout<<a<<","<<b<<","<<c<<endl;
    
      /* number to string */
      ss << a;
      ss >> d;
      ss.clear();
    
      ss << b;
      ss >> e;
      ss.clear();
    
      ss << c;
      ss >> f;
      ss.clear();
    
      cout<<d<<","<<e<<","<<f<<endl;
    
      return 0;
    }
    
    Output:
    32,3.141500,567283
    32,3.141500,567283

    小结:C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性,可以使用这些库来实现安全和自动的类型转换。言下之意就是,使用stringstream进行字符串与数字的转换是更好的选择。

  • 相关阅读:
    .NET正则基础之——平衡组
    网站架构探索负载均衡的方式
    Sql2005 全文索引详解
    构架师之路(4) 里氏代换原则(Liskov Substitution Principle, LSP)
    Ubuntu 9.04 server安装nginx+php(fastcgi)
    构架师之路(2) 开闭原则(OpenClosed Principle,OCP)
    SQL Server中常用全局变量介绍
    构架师之路(3) 1 IoC理论的背景
    linux ubuntu 命令集合
    理解nginx 和 php(fastcgi)的关系
  • 原文地址:https://www.cnblogs.com/bohaoist/p/4748223.html
Copyright © 2011-2022 走看看