我这两天写程序发现我如果给char*数组直接赋值如:char* bbb="bbbbbbbbb";然后cstringtmp.Format("%s",bbb);可以得到正确的值。但是如果我给一个char型数组赋值然后付给char*变量,就得不到正确值如:chartmp=ch;cstringtmp.Format("%s",chartmp);
没太明白你的意思,如果仅仅只是要在char* 和CString之间转换的话,那么异常简单,这样做:char buf[256]="abcdefg";CString str;str = buf;//char* 转 CStringstrcpy(buf, str);//CString 转 char*,因为CString重载了const char*操作符,所以这个操作可以正确运行。
//字符串放到数组里//buf 要存放的地方//maxlen:存放数目的最大值//返回值:长度//////////////////////////////////////////////////////////////////////////int StrToChar(CString str,char* buf,int maxlen){ int len = str.GetLength(); if (len > maxlen) { len = maxlen; } for(int i=0;i<len;i++) buf[i]= str[i]; if (len == maxlen) { buf[len-1] = 0; } else { buf[len] = 0; } return len;}////////////////////////////////////////////////////////////////////////数组里的字符串放到CString里//buf 存放原字符串的地方//len 字符串的长度//str:要搬运的地方//////////////////////////////////////////////////////////////////////void CharToStr(char* buf,int len,CString &str){ str = ""; for(int i=0;i<len;i++) { str+= buf[i]; } }
我调试了下,没什么问题啊char* ch="bbbbbbbbb";char* chartmp;CString cstringtmp;chartmp=ch;cstringtmp.Format("%s",chartmp);
char chr[100];CString str = "wwwwwwwww";char* pchar = NULL;//赋值代码如下:memset(chr,0,100);memcpy(chr,str.GetBuffer(str.GetLength()),str.GetLength());pchar = chr;//试下
http://hi.baidu.com/luosiyong/blog/item/2a84edc8c8db93117f3e6fd6.html看看这里你一定就明白了,char CString 和 string相互的转换都有。建议用sprintf,而不建议用Format