C++数据类型转换基础
Cstring 转换 char *
Cstring str;
char * charstr;
charstr = (LPSTR)(LPCTSTR)str;
Cstring转换char[200]
void trans ( CString stra)
{
char cont[200];
int length = stra.GetLength(); //获取Cstring内容的长度
for(int i=0;i<length;i++)
{
cont[i] = stra.GetAt(i);
}
cont[i] = '\0';
}
CString转int
Cstring cstr;
int sint;
sint = atoi(cstr);//接收空格之前的数字,遇到空格就不再显示以后的数字
CString转float
Cstring cstr;
float sfloat;
sint = atoi(sfloat);
char *转BYTE[]
void CGameDLG::OnButton1()
{
CString strposX;
char *markCode = "asdf156aw4ef21asdf65a4";//定义一个char*
if (strlen(markCode) % 2 != 0) //判断是否为偶数
{
AfxMessageBox("请输入双数个字节");
return ;
}
int len = strlen(markCode) / 2; //特征码长度
BYTE *m_code = new BYTE[len];//开辟一个新空间
for (int k = 0; k < len; k++)//将特征码转换成byte型
{
char c[] = {markCode[k*2], markCode[k*2+1], '\0'};//每次提取2个字符出来
m_code[k] = (BYTE)::strtol(c, NULL, 16);//将这2个字符传给m_code[k]
}
for (int j = 0;j<len;j++)//弹出信息框检查是否写正确了
{
strposX.Format("%p",m_code[j]);//把第j次的数用16进制写到信息框的内容中
AfxMessageBox(strposX);//弹出信息框
}
delete m_code; //删除指针内容
m_code = NULL;//指针指向空
}
char *转string
#include <iostream>
#include <string>
using namespace std;
void main()
{
char * CtoS = "abcdef1234";
string word = CtoS;
cout<<word;
}//输出的结果是"abcdef1234"
char * 转换 Cstring
CString str;
char * charstr;
charstr=”this is a str!”;
str=charstr;
BYTE[]转换char*
c[i] = (char) (b[i] & 0xff)
string转 const char *
#include <iostream>
#include <string>
using namespace std;
void main()
{
string word = "abcdef1234";
const char * CtoS =word.c_str();
cout<<CtoS;
}
Dword转换Cstring
同int转Cstring
int转Cstring
CString intTOcstring(int abcd )
{
CString transform,result;
transform.Format("结果为:%u",abcd);
return transform;
} //如果abcd为1234,transfor为文本型“结果为:1234”,如果abcd为 -1234,transfor为文本型“结果为:4294966062” 返回时是一个2的32次方减去这个负数的绝对值。
string或者char 转Cstring
Cstring cstr; //或者是char
string str;
cstr.format(”%s”, str);
char *转BYTE *
void changecode(char *markCode,BYTE *m_code,int len)//把代码转换为字节集
{
for (int i = 0; i < len; i++)//遍历这么长度的个数的指针
{
char c[] = {markCode[i*2], markCode[i*2+1], '\0'};//定义一个字节的特征码,保存到char中
m_code[i] = (BYTE)::strtol(c, NULL, 16);//把m_code变为16进制BYTE型的
}
}
char[]字符相加
void CGameDLG::OnButton1()
{
char a[]="abc";
char b[]="def";
strcat(a,b);
AfxMessageBox(a);
}