VC++和C语⾔中常见数据类型转换为字符串的⽅法1。短整型(int)cstring转为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码字符值返回
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论