VC中char*与cstring型的转换

我这两天写程序发现我如果给char*数组直接赋值如:
char* bbb="bbbbbbbbb";然后cstringtmp.Format("%s",bbb);可以得到正确的值。但是如果我给一个char型数组赋值然后付给char*变量,就得不到正确值
如:chartmp=ch;cstringtmp.Format("%s",chartmp);
最新回答
深情是罪

2025-06-26 19:03:33

没太明白你的意思,如果仅仅只是要在char* 和CString之间转换的话,那么异常简单,这样做:
char buf[256]="abcdefg";
CString str;

str = buf;//char* 转 CString
strcpy(buf, str);//CString 转 char*,因为CString重载了const char*操作符,所以这个操作可以正确运行。
梦的河流

2025-06-26 10:08:33

//字符串放到数组里
//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];
}

}
为你唱起小乌龟

2025-06-26 12:31:52

我调试了下,没什么问题啊
char* ch="bbbbbbbbb";
char* chartmp;
CString cstringtmp;
chartmp=ch;
cstringtmp.Format("%s",chartmp);
鱼沉秋水

2025-06-26 12:10:46

char chr[100];
CString str = "wwwwwwwww";
char* pchar = NULL;
//赋值代码如下:
memset(chr,0,100);
memcpy(chr,str.GetBuffer(str.GetLength()),str.GetLength());
pchar = chr;

//试下
巴拉拉能量作业消失

2025-06-26 02:29:37

http://hi.baidu.com/luosiyong/blog/item/2a84edc8c8db93117f3e6fd6.html

看看这里你一定就明白了,char CString 和 string相互的转换都有。
建议用sprintf,而不建议用Format