+ -
当前位置:首页 → 问答吧 → 将CString类型的字符串放入数组中

将CString类型的字符串放入数组中

时间:2011-12-13

来源:互联网

如题:代码如下:
char* str=(char*)malloc(100); //调试时分配区域的首地址为:str地址为XXXX0830
CString ch;
ch.Format("adsgdfgfd");
str=(LPSTR)(LPCTSTR)ch; //str地址变为:XXXXa894


------------------------------
为什么会变呢?将字符串存入数组不是这样做的吗?请大家帮忙想想!!!在线等待、、、、、、、、

作者: Balana_yan   发布时间: 2011-12-13

char* str=(char*)malloc(100); //调试时分配区域的首地址为:str地址为XXXX0830
CString ch;
ch.Format("adsgdfgfd");
strcpy(str, ch);

作者: yuucyf   发布时间: 2011-12-13

你是把地址赋值给str,当然会变了.
你的做法类似:
char *str1 = NULL;
char *str2 = xxx;
str1 = str2;

作者: yuucyf   发布时间: 2011-12-13

我试一下呢、、、、可是之前都没有问题啊。strcpy是C的东西吧

作者: Balana_yan   发布时间: 2011-12-13

UNICODE下CString转换成char*的方法

方法1: CString str = _T("测试用例");
  int nLength = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);
  char *pBuffer = new char[nLength + 1];
  WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pBuffer,nLength,NULL,NULL);
  pBuffer[nLength] = 0;

方法2:

  CString s = _T("测试用例");
  USES_CONVERSION;
  char* lpsz = T2A(s.GetBuffer(s.GetLength()));
  s.ReleaseBuffer(s.GetLength());

作者: dahaiI0   发布时间: 2011-12-13

当然不是这样做的

char* str=(char*)malloc(100); //调试时分配区域的首地址为:str地址为XXXX0830
CString ch;
ch.Format("adsgdfgfd");
strcpy(str, (LPSTR)(LPCTSTR)ch);//str=(LPSTR)(LPCTSTR)ch; //str地址变为:XXXXa894

作者: mayudong1   发布时间: 2011-12-13

str=(LPSTR)(LPCTSTR)ch; //str地址变为:XXXXa894
执行此句后,str = CString类型变量ch的地址值,当然和初始分配时的值不同了。
楼主可以单步跟踪验证。

作者: fight_in_dl   发布时间: 2011-12-13

char* str=(char*)malloc(100); 
sprintf(str,"adsgdfgfd");

作者: microsoftwin   发布时间: 2011-12-13

热门下载

更多