char* 和CString 很郁闷的问题
getName函数声明如下:
Acad::ErrorStatus getName(const char*& pName) const;
Acad::ErrorStatus getName(char*& pName) const;
我这么写有时候能正常运行,有时候却明明p有值,str没有值
CString str; char* p = str.GetBuffer(0); blkTblRecPtr->getName(p); str.ReleaseBuffer();
CString str; char* p = str.GetBuffer(0); char* pTemp; blkTblRecPtr->getName(p); strcpy(p, pTemp); str.ReleaseBuffer();
CString str; char* p = str.GetBuffer(0); char* pTemp; blkTblRecPtr->getName(pTemp); strcpy(p, pTemp); str.ReleaseBuffer();
[解决办法]
要看blkTblRecPtr->getName干了啥操作
[解决办法]
恩,2是写错了吧
你的目的不是要把pTemp, 通过getName取得值,然后 copy到p中吗?
1就是鱼说的那样
[解决办法]
char* p = str.GetBuffer(0);
blkTblRecPtr->getName(p);
可能是空间不够,GetBuffer(0)buffer的大小应该是str的原大小
[解决办法]
CString::GetBuffer只是获取CString对象字符缓冲区的指针,如果用它来操作,就必须如同C处理字符串的一样操作
[解决办法]