码迷,mamicode.com
首页 > 编程语言 > 详细

VC++和C语言中常见数据类型转换为字符串的方法

时间:2017-12-07 23:49:32      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:var   操作符   部分   16进制   atoi   程序员   length   dig   成功   

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字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 (‘\0‘)才结束转换,并将结果返回。参数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字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回。

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

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

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

表头文件   #include<stdlib.h>

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

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

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

附加说明   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字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时 (‘\0‘)才结束转换,并将结果返回。若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字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符 串结束时(‘\0‘)结束转换,并将结果返回。若参数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字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转 换,再遇到非数字或字符串结束时(‘\0‘)结束转换,并将结果返回。若参数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码字符值返回

VC++和C语言中常见数据类型转换为字符串的方法

标签:var   操作符   部分   16进制   atoi   程序员   length   dig   成功   

原文地址:http://www.cnblogs.com/rainbow70626/p/8001360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!