1. CString --> char*
(1)传给未分配内存的指针
CString cstr ="ASDDSD";
char *ch =cstr.GetBuffer(cstr.GetLength()+ 1);
cstr.ReleaseBuffer(); //使用完后及时释放,以便能使用其它的CString成员函数
//修改ch指向的值等于修改cstr里面的值
//用完ch后,不用deletech,因为这样会破坏cstr内部空间,容易造成程序崩溃
(2)赋给已分配内存的char *
CString cstr1 ="ASDDSD";
int strLength =cstr1.GetLength() + 1;
char *pValue =new char[strLength];
strncpy(pValue,cstr1, strLength);
2. CString --> const char*
传给未分配内存的const char*(LPCTSTR)指针
CStringcstr(asdd); //CString cstr=”asdd”;
const char* ch =(LPCTSTR)cstr;
//ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全。
3. CString --> char[]
赋给已分配内存char[]数组.
CString cstr2 ="ASDDSD";
int strLength2= cstr2.GetLength() + 1;
charchArray[100];
memset(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.
strncpy(chArray, cstr2, strLength2);
//strncpy(chArray,(LPCTSTR) cstr2,sizeof(chArray));
4. string --> char*
string 是c++标准库里面其中一个,封装了对字符串的操作。
(1)data(),返回没有”\0“的字符串数组
stringstr="abc";
char*p=str.data();
(2)c_str 返回有”\0“的字符串数组
stringstr="gdfd";
char*p=str.c_str();
(3)copy
stringstr="hello";
char p[40];
str.copy(p,5,0); //这里5代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //主意一定要手动加上结束符
cout < <p;
5. string --> CString
CString.format("%s",string.c_str());
//用c_str()确实比data()要好
6. char* --> CString
CString.Format("%s", char*);
7. char* --> string
strings(char *);
注:标准C里没有string,char *==char []==string
8. string --> char *
char *p =string.c_str();
9. CString --> string
strings(CString.GetBuffer(CString.GetLength()));
//GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间
10. CString --> char *
charpoint=strtest.GetBuffer(strtest.GetLength());
//不建议用(LPCTSTR)进行强制类型转化,这样strtest大小发生变化时会出现错误。
11. CString --> int
将字符转换为整数,可以使用atoi、_atoi64,类似的还有相关函数atol(转为长整型)、atof(转为浮点小数)等。
CString ss=″1212.12″;
inttemp=atoi(ss);
12. char* --> int
intatoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);
13. CString --> int
可以使用CString的Format函数,Format函数的功能很强,值得你研究一下。
CString s;
inti = 64;
s.Format(“%d”, i);
//如果是使用char数组,也可以使用sprintf函数。
补充:
Cstring的相关成员函数:http://www.cnblogs.com/Caiqinghua/archive/2009/02/16/1391190.html
微软对这方面的总结:http://msdn.microsoft.com/zh-cn/library/vstudio/ms235631.aspx
不能将参数 1 从“char [10]”转换为“LPTSTR”:
解决:http://www.xuebuyuan.com/833065.html
不能将参数 1 从“CString”转换为“const char *”
解决:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/
参考来源:
http://blog.minidx.com/2009/03/03/2209.html
http://blog.csdn.net/sszgg2006/article/details/8667945