澳门新葡萄京娱乐网站-澳门新葡萄京888官网-所有平台

热门关键词: 澳门新葡萄京娱乐网站,澳门新葡萄京888官网

中数字与字符串之间的转换,类型转换集合

作者: 澳门新葡萄京娱乐网站  发布:2019-12-21

CString转换集合CString转string可能要添加相关的头文件,CT2A它定义在"atlconv.h"中CStringfile1;stringfilename;CT2Axx(file1);filename=xx;CString转char*CStringstrRootPath;USES_CONVERSION;char*chRootPath=T2A(strRootPath);CString转intintMinSize=_ttoi(CStringcst_MinSize);CString转floatCStringstr_data;floatf_data;f_data=_tstof(str_data);/*------------------------------------------------------------------------------------------------------------------------*/string转换集合string转char*char*p=(char*)(strpath.c_str())string转floatstringstr_data="12345";floatf_data;f_data=atof(str_data.c_str());string转intintn=atoi(str.c_str());

BYTE --- unsigned char

1、字符串数字之间的转换

WORD --- unsigned short

(1)string --> char *
   string str("OK");
   char * p = str.c_str();

DWORD --- unsigned long

(2)char * -->string
   char *p = "OK";
   string str(p);

 

(3)char * -->CString 
   char *p ="OK";
   CString m_Str(p);
   //或者
   CString m_Str;
   m_Str.Format("%s",p);

一、int <---> CString

(4)CString --> char *
   CString str("OK");
   char * p = str.GetBuffer(0);
   ...
   str.ReleaseBuffer();

  int转CString:

(5)string --> CString  
   CString.Format("%s", string.c_str());  

    int i=100;

(6)CString --> string
   string s(CString.GetBuffer(0));  
   GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间,CString对象不能动态增长了。

    CString str="";

(7)double/float->CString
   double data;
   CString.Format("%.2f",data); //保留2位小数

    str.Format("%d",i);

(8)CString->double
   CString s="123.12";
   double   d=atof(s);   
 
(9)string->double
  double d=atof(s.c_str());

  CString转int:

2、数字转字符串:使用sprintf()函数

    CString str="123";

char str[10];
int a=1234321;

    int i;

sprintf(str,"%d",a);

char str[10];
double a=123.321;

    i=atoi(str);

sprintf(str,"%.3lf",a);

char str[10];
int a=175;

    //i=_ttoi(str);  (Unicode)

sprintf(str,"%x",a);//10进制转换成16进制,如果输出大写的字母是sprintf(str,"%X",a)

char *itoa(int value, char* string, int radix); 
同样也可以将数字转字符串,不过itoa()这个函数是平台相关的(不是标准里的),故在这里不推荐使用这个函数。

3、字符串转数字:使用sscanf()函数

char str[]="1234321";
int a;
sscanf(str,"%d",&a);
.............
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
.............
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16进制转换成10进制

另外也可以使用atoi(),atol(),atof().

4、使用stringstream类

用ostringstream对象写一个字符串,类似于sprintf() 
  ostringstream s1;
  int i = 22;
  s1 << "Hello " << i << endl;
  string s2 = s1.str();
  cout << s2;

用istringstream对象读一个字符串,类似于sscanf() 
  istringstream stream1;
  string string1 = "25";
  stream1.str(string1);
  int i;
  stream1 >> i;
  cout << i << endl;  // displays 25

二、float <---> CString

  float转CString:

    float a=3.1415;

    CString str="";

    str.Format("%.2f",a); //保留小数点后两位

  CString转float:

    先将CString转char*,因为atof()的参数为char*型,atof()的返回值为double型,可直接强转为float型;

    CString str="3.1415";

    float f;

    f=atof(str);

    //f=_tstof(str);  (Unicode)

三、double <---> CString

  double转CString:

    double d=3.1415;

    CString str="";

    str.Format("%.2lf",d);

  CString转double:

    CString str="3.1415";

    char* s;

    s=str.GetBuffer(str.GetLength());

    str.ReleaseBuffer();

    double d;

    d=atof(s);

四、string <---> CString

  string转CString:

    CString str;

    string s="hello";

    str.Format("%s",s.c_str());

  CString转string:

    CString str="hello";

    string s(str.GetBuffer());

五、char* <---> CString

  char*转CString:

    char sChar[]="hello";

    CString str;

    str.Format("%s",sChar);

    AfxMessageBox(str);

  CString转char*:

    方法一:

    CString str="hello";

    char* s;

    s=new char[str.GetLength()+1];

    strcpy(s,str);

    方法二:

    CString str="hello";

    char* s;

    s=str.GetBuffer(str.GetLength());

    str.ReleaseBuffer();

六、TCHAR* <---> CString

  TCHAR*转CString:

    TCHAR sChar[]="hello";

    CString str;

    str.Format("%s",sChar);

    AfxMessageBox(str);

  CString转TCHAR*:

    方法一:

    CString str="hello";

    TCHAR* s=(LPTSTR)(LPCTSTR)str;

    方法二:

    CString str="hello";

    TCHAR* s;

    s=new TCHAR[str.GetLength()+1];

    _tcscpy(s,str);

    方法三:

    CString str="hello";

    TCHAR* s;

    s=str.GetBuffer(str.GetLength());

    str.ReleaseBuffer();

七、int <---> char*

  int转char*:

    int i=54321;

    char ch[5];

    itoa(i,ch,10);  //10-十进制,2-二进制,8-八进制,16-十六进制

八、LPCTSTR <---> CString

  LPCTSTR相当于const TCHAR* -> const WCHAR* (unicode)/const CHAR*

  _T() ---将字符串转换为TCHAR,TCHAR是一个宏定义,当为Unicode编码时,TCHAR等同于WCHAR,否则等同于CHAR

  LPCTSTR转CString:

    LPCTSTR a;

    CString b=a;

  CString转LPCTSTR:

    CString a;

    const char* b=(LPCTSTR)a;

九、USHORT <---> CString

  USHORT转CString:

    USHORT a;

    CString b;

    b.Format("%d",a);

十、BYTE* <---> CString

  CString转BYTE*:

    CString a;

    BYTE* b=(BYTE*)(LPCTSTR)a;

 

本文由澳门新葡萄京娱乐网站发布于澳门新葡萄京娱乐网站,转载请注明出处:中数字与字符串之间的转换,类型转换集合

关键词:

上一篇:没有了
下一篇:没有了