关于CString和strcpy的奇怪故障,高手请进!
一段简单的代码如下:
--------------------------------
void C...Dlg::OnOK()
{
CString str;
strcpy((LPSTR)(LPCTSTR)str,"Hello!");
AfxMessageBox(str);
CString strL = "";
int n;
n = strL.GetLength();
AfxMessageBox(strL);
CDialog::OnOK();
}
--------------------------------
大家可以跟踪看一看:
首先str得到Hello!没有问题
奇怪在下面,定义了第二个CString类型的对象,并赋初值为空字符,但跟踪观察发现,strL中同样也是Hello!指针地址是一样的,但是奇怪的是GetLength()却是0。既然长度为0,但却有值,而且还可以正常使用,比如用AfxMessageBox显示。但是如果我赋值不是空字符而是一个具体的,则没有问题
不清楚CString是怎么分配空间的,而且这个问题明显在strcpy这个函数,如果不用它应该没有问题
请高手指点一二,尤其是CString的空间分配,我赋了空字符为什么不分配新空间?strcpy在这里用法
有什么不对的?