1 Cstring转char、string、int等数据类型的方法 2 (2010-01-08 16:06:14) 3 转载 4 标签: 5 杂谈 6 分类: VC 7 8 CString 转char * 9 CString cstr; 10 char *p = (LPSTR)(LPCTSTR)cstr; 11 string 转 CString 12 CString.format(”%s”, string.c_str()); 13 char 转 CString 14 CString.format(”%s”, char*); 15 char 转 string 16 string s(char *); 17 string 转 char * 18 char *p = string.c_str(); 19 CString 转 string 20 string s(CString.GetBuffer()); 21 1,string -> CString 22 CString.format(”%s”, string.c_str()); 23 用c_str()确实比data()要好. 24 2,char -> string 25 string s(char *); 26 只能初始化,在不是初始化的地方最好还是用assign(). 27 3,CString -> string 28 string s(CString.GetBuffer()); 29 GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 30 《C++标准函数库》中说的 31 有三个函数可以将字符串的内容转换为字符数组和C―string 32 1.data(),返回没有”0“的字符串数组 33 2,c_str(),返回有”0“的字符串数组 34 3,copy() 35 ――――――――――――――――――――― 36 CString与int、char*、char[100]之间的转换- - 37 CString与int、char*、char[100]之间的转换- - 38 CString互转int 39 将字符转换为整数,可以使用atoi、_atoi64或atol。 40 而将数字转换为CString变量,可以使用CString的Format函数。如 41 CString s; 42 int i = 64; 43 s.Format(”%d”, i) 44 Format函数的功能很强,值得你研究一下。 45 void CStrDlg::OnButton1() 46 { 47 // TODO: Add your control notification handler code here 48 CString 49 ss=”1212.12″; 50 int temp=atoi(ss); 51 CString aa; 52 aa.Format(”%d”,temp); 53 AfxMessageBox(”var is ” + aa); 54 } 55 sart.Format(”%s”,buf); 56 CString互转char* 57 ///char * TO cstring 58 CString strtest; 59 char * charpoint; 60 charpoint=”give string a value”; 61 strtest=charpoint; 62 ///cstring TO char * 63 CString 转char * 64 CString cstr; 65 char *p = (LPSTR)(LPCTSTR)cstr; 66 string 转 CString 67 CString.format(”%s”, string.c_str()); 68 char 转 CString 69 CString.format(”%s”, char*); 70 char 转 string 71 string s(char *); 72 string 转 char * 73 char *p = string.c_str(); 74 CString 转 string 75 string s(CString.GetBuffer()); 76 1,string -> CString 77 CString.format(”%s”, string.c_str()); 78 用c_str()确实比data()要好. 79 2,char -> string 80 string s(char *); 81 只能初始化,在不是初始化的地方最好还是用assign(). 82 3,CString -> string 83 string s(CString.GetBuffer()); 84 GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 85 《C++标准函数库》中说的 86 有三个函数可以将字符串的内容转换为字符数组和C―string 87 1.data(),返回没有”0“的字符串数组 88 2,c_str(),返回有”0“的字符串数组 89 3,copy() 90 ――――――――――――――――――――― 91 CString与int、char*、char[100]之间的转换- - 92 CString与int、char*、char[100]之间的转换- - 93 CString互转int 94 将字符转换为整数,可以使用atoi、_atoi64或atol。 95 而将数字转换为CString变量,可以使用CString的Format函数。如 96 CString s; 97 int i = 64; 98 s.Format(”%d”, i) 99 Format函数的功能很强,值得你研究一下。 100 void CStrDlg::OnButton1() 101 { 102 // TODO: Add your control notification handler code here 103 CString 104 ss=”1212.12″; 105 int temp=atoi(ss); 106 CString aa; 107 aa.Format(”%d”,temp); 108 AfxMessageBox(”var is ” + aa); 109 } 110 sart.Format(”%s”,buf); 111 CString互转char* 112 ///char * TO cstring 113 CString strtest; 114 char * charpoint; 115 charpoint=”give string a value”; 116 strtest=charpoint; 117 ///cstring TO char * 118 charpoint=strtest.GetBuffer(strtest.GetLength()); 119 标准C里没有string,char *==char []==string 120 可以用CString.Format(”%s”,char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。 121 CString转换 char[100] 122 char a[100]; 123 CString str(”aaaaaa”); 124 strncpy(a,(LPCTSTR)str,sizeof(a)); 125 126 charpoint=strtest.GetBuffer(strtest.GetLength()); 127 标准C里没有string,char *==char []==string 128 可以用CString.Format(”%s”,char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。 129 CString转换 char[100] 130 char a[100]; 131 CString str(”aaaaaa”); 132 strncpy(a,(LPCTSTR)str,sizeof(a)); 133 134 135 136 137 138 139 //将ASCII码转化为16进制数 140 BYTE ASCIIToHexChar(BYTE ch) 141 { 142 if((ch>='0')&&(ch<='9')) 143 { 144 return ch-0x30; 145 146 } 147 148 else if((ch>='A')&&(ch<='F')) 149 { 150 return ch-'A'+10; 151 } 152 else if((ch>='a')&&(ch<='f')) 153 { 154 return ch-'a'+10; 155 } 156 else 157 { 158 return -1; 159 } 160 } 161 162 163 164 //将char转化为16进制 165 166 char CharToHexChar(char ch) 167 { 168 if((ch>='0')&&(ch<='9')) 169 { 170 return ch-0x30; 171 172 } 173 174 else if((ch>='A')&&(ch<='F')) 175 { 176 return ch-'A'+10; 177 } 178 else if((ch>='a')&&(ch<='f')) 179 { 180 return ch-'a'+10; 181 } 182 else 183 { 184 return -1; 185 } 186 } 187 188 189 190 //16进制字符串CString 转为 BYTE[] 数组的方法 191 192 BYTE[] StringToByteArray(CString str) 193 194 { 195 196 //CString str ="01 02 03 04";例如这样数据 197 BYTE tmpByte = 0x00; 198 int strLen = str.GetLength(); 199 BYTE cmd[1024]; //注意越界 200 memset(cmd, '