zoukankan      html  css  js  c++  java
  • VC++和C语言中常见数据类型转换为字符串的方法

    1。短整型(int) 
    itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制 
    itoa(i,temp,2); ///按二进制方式转换 
    2。长整型(long) 
    ltoa(l,temp,10);

    3。浮点数(float,double) 
    用fcvt可以完成转换,这是MSDN中的例子: 
    int decimal, sign; 
    char *buffer; 
    double source = 3.1415926535; 
    buffer = _fcvt(source,7,&decimal,&sign); 
    运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0 
    decimal表示小数点的位置,sign表示符号:0为正数,1为负数

    4。CString变量 
    CString str= "2008北京奥运"; 
    char *buf = (LPSTR)(LPCTSTR)str; 
    CString str = "....."; 
    int nSize = str.GetLength()+1; 
    char *p = new char[nSize]; 
    memset(p,0, nSize*sizeof(char)); 
    strcpy(p,str);

    5。BSTR变量 
    BSTR bstrValue = ::SysAllocString(L"程序员"); 
    char * buf =_com_util::ConvertBSTRToString(bstrValue); 
    SysFreeString(bstrValue); 
    AfxMessageBox(buf); 
    delete(buf);

    6。CComBSTR变量 
    CComBSTR bstrVar("test"); 
    char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str); 
    AfxMessageBox(buf); 
    delete(buf); 

    7。_bstr_t变量 
    _bstr_t类型是对BSTR的封装,因为已经重载了=操作符,所以很容易使用 
    _bstr_t bstrVar("test"); 
    const char *buf = bstrVar;///不要修改buf中的内容 
    AfxMessageBox(buf); 

    8。通用方法(针对非COM数据类型) 
    用sprintf完成转换 
    char buffer[200]; 
    char c = '1'; 
    int i = 35; 
    long j = 1000; 
    float f = 1.7320534f; 
    sprintf(buffer, "%c",c); 
    sprintf(buffer, "%d",i); 
    sprintf(buffer, "%d",j); 
    sprintf(buffer, "%f",f); 



    atof(将字符串转换成浮点型数)  
    相关函数   atoi,atol,strtod,strtol,strtoul

    表头文件   #include <stdlib.h>

    定义函数   double atof(const char *nptr);

    函数说明   atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。

    返回值   返回转换后的浮点型数。

    附加说明   atof()与使用strtod(nptr,(char**)NULL)结果相同。

    atoi(将字符串转换成整型数)  
    相关函数   atof,atol,atrtod,strtol,strtoul

    表头文件   #include<stdlib.h>

    定义函数   int atoi(const char *nptr);

    函数说明   atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。

    返回值   返回转换后的整型数。

    附加说明   atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。

    atol(将字符串转换成长整型数)  
    相关函数   atof,atoi,strtod,strtol,strtoul

    表头文件   #include<stdlib.h>

    定义函数   long atol(const char *nptr);

    函数说明   atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。

    返回值   返回转换后的长整型数。

    附加说明   atol()与使用strtol(nptr,(char**)NULL,10);结果相同。

    gcvt(将浮点型数转换为字符串,取四舍五入)  
    相关函数   ecvt,fcvt,sprintf

    表头文件   #include<stdlib.h>

    定义函数   char *gcvt(double number,size_t ndigits,char *buf);

    函数说明   gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和 fcvt()不同的地方在于,gcvt()所转换后的字符串包含小数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。

    返回值   返回一字符串指针,此地址即为buf指针。

    strtod(将字符串转换成浮点数)  
    相关函数   atoi,atol,strtod,strtol,strtoul

    表头文件   #include<stdlib.h>

    定义函数   double strtod(const char *nptr,char **endptr);

    函数说明   strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时 ('')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr 字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。

    返回值   返回转换后的浮点型数。

    strtol(将字符串转换成长整型数)  
    相关函数   atof,atoi,atol,strtod,strtoul

    表头文件   #include<stdlib.h>

    定义函数   long int strtol(const char *nptr,char **endptr,int base);

    函数说明   strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制 方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则 会使用16进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符 串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。

    返回值   返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。

    附加说明   ERANGE指定的转换字符串超出合法范围。

    strtoul(将字符串转换成无符号长整型数)  
    相关函数   atof,atoi,atol,strtod,strtol

    表头文件   #include<stdlib.h>

    定义函数   unsigned long int strtoul(const char *nptr,char **endptr,int base);

    函数说明   strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表 采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则是采用10进制做转换,但遇到如 '0x'前置字符则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转 换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针 由endptr返回。

    返回值   返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。

    附加说明   ERANGE指定的转换字符串超出合法范围。

    toascii(将整型数转换成合法的ASCII 码字符)  
    相关函数   isascii,toupper,tolower

    表头文件   #include<ctype.h>

    定义函数   int toascii(int c)

    函数说明   toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。

    返回值   将转换成功的ASCII码字符值返回

  • 相关阅读:
    ASP.NET SignalR HubPipelineModule
    MongoDB新版本特性
    Xamarin向iOS和Android引入C# Async支持
    Redis开源文档《Redis设计与实现》[转]
    WCF的追踪分析工具——SvcPerf
    Windows Azure移动服务更新,支持Android、活动目录和更多语言,并支持在东亚地区部署服务
    社区网站系统 jsGen
    单元测试同时支持 NUnit/MSTest
    .NET的微型Web框架 Nancy
    通过二维码登录(CSC模式)
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/8001360.html
Copyright © 2011-2022 走看看