zoukankan      html  css  js  c++  java
  • String、CString、char*、int、float、double相互转换

    不同数据类型之间的转换可以说用得特别频繁,我也是经常查,索性就将其全部整理出来。


    一、String和int、float、double的转换

     源代码StringAndNumberConvertor:http://download.csdn.net/detail/z702143700/8785721

    1.  Stringstream

    使用很简单,也很方便,个人比较喜欢的用法,直接上代码:

       

    template<typename T>
        static T StringToNumber(const string&desString)
        {
            istringstreamiss(desString);
    
            Tresult;
    
            iss>> result;
    
            returnresult;
        }
    
       
    
        template<typename T>
       static string NumberToString(T desNumber)
        {
    
            ostringstreamoss(desNumber);
            stringresult;
           //oss<< desNumber;
            //特别提出这里不能这样写,否则float、double就不能被正确地转换。
            result= oss.str();
            returnresult;
        }

    2.  atoi、atol、atof和_itoa、_ltoa(_itoa_s、_ltoa_s安全转换函数)

    atoi、atol、atof是从字符串到数字的转换,_itoa_s、_ltoa_s是从数字到字符串的转换。

    示例:

    static intStringToInt(string& desString){
    
            returnatoi(desString.c_str());
    
    }
    
     
    char c2[32];
    
    _itoa_s(desNumber,c2,32,10);//10位有效数字,因为int最大是21亿。
    
    return c2;
    
    

    3.  strtol、strtoul、strtod

    不怎么用的方法:

    double a =strtod(desString.c_str(),NULL);

    4.  Sprintf和sscanf

    就像控制台的printf和scanf、文件输入输出的fprintf和fscanf一样,sprintf和sscanf是用于字符串的输入输出。它们属于C方式的字符串格式化,printf_s和sscanf_s表示安全转换方法。

     

    Sscanf表示将字符串buffer中的特定字符提取成指定的(format)格式。

    intsscanf(const char *buffer,const char *format [,argument ] ... );

    int表示转换成功的个数,buffer表示要提取的目的字符串,format 表示提取格式,argument 表示保存提取的值。

     

    Sprintf表示将format格式中的字符放入到buffe中。

    intsprintf(char *buffer,const char *format [,argument] ... );

    参数解释同sscanf。

    5.  _gcvt_s将double转换成string

    这个方法多用于double中:

    char c2[32];
    
    _gcvt_s(c2,32,desNumber,20);
    
    return c2;

    二、String和char*的转换

        String str = "Hello";
    
        char* c_str = str.c_str(); //转换成c类型的字符串
    
        char* pstr = str.data(); //转换成字符数组

    三、String和Cstring的转换

        //string转成Cstring
    
        string str = "hello";
    
        Cstring cstr = str.c_str();或者 Cstring cstr = str.data();
    
     
    
        c_str()和data()的区别在于前者返回带'/0'的字符串,后者不带
    
        cstr.Format("%s", str.c_str());
    
        cstr.Format("%s", str.data());
    
     
    
        //Cstring转成string
    
        str = cstr.GetBuffer(0);
    
        str = LPCSTR(cstr);

    四、Cstring和char*的转换

        char* ptchar = cstr.GetBuffer(0);
    
        //注意char*是不同类型转换之间的桥梁!!!

    五、Cstring和int、float、double的转换

        int n = 123;
        CString cstr;
        cstr.Format("%d", n);
    
        n = atoi(cstr);//CString转成int
        atof,atol 分别是CString转float long


    生命不止,奋斗不息!
  • 相关阅读:
    Java关键字——instanceof
    C#基础知识整理 IList接口——非泛型
    .Net 中HashTable,HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较
    JS 判断是否为null
    java数组与字符串相互转换、整型与字符串相互转换
    数组元素的反转
    IOS系统中点击失效
    vue中计算属性和方法的区别,演示代码
    VUE中使用的插件有哪些?为什么,不能自动补全,script,methods和export default?
    【VueJS】实例中data属性的三种写法及区别
  • 原文地址:https://www.cnblogs.com/huzongzhe/p/6735177.html
Copyright © 2011-2022 走看看