读书人

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

发布时间: 2012-03-29 12:53:12 作者: rapoo

将CString类型的字符串放入数组中
如题:代码如下:
char* str=(char*)malloc(100); //调试时分配区域的首地址为:str地址为XXXX0830
CString ch;
ch.Format("adsgdfgfd");
str=(LPSTR)(LPCTSTR)ch; //str地址变为:XXXXa894


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

[解决办法]
char* str=(char*)malloc(100); //调试时分配区域的首地址为:str地址为XXXX0830
CString ch;
ch.Format("adsgdfgfd");
strcpy(str, ch);
[解决办法]
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());


[解决办法]
当然不是这样做的

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

[解决办法]
str=(LPSTR)(LPCTSTR)ch; //str地址变为:XXXXa894
执行此句后,str = CString类型变量ch的地址值,当然和初始分配时的值不同了。
楼主可以单步跟踪验证。
[解决办法]
char* str=(char*)malloc(100);
sprintf(str,"adsgdfgfd");

读书人网 >VC/MFC

热点推荐