读书人

char* 和CString 很郁闷的有关问题

发布时间: 2012-05-14 15:24:34 作者: rapoo

char* 和CString 很郁闷的问题
getName函数声明如下:
Acad::ErrorStatus getName(const char*& pName) const;
Acad::ErrorStatus getName(char*& pName) const;

我这么写有时候能正常运行,有时候却明明p有值,str没有值

C/C++ code
    CString str;    char* p = str.GetBuffer(0);    blkTblRecPtr->getName(p);    str.ReleaseBuffer();

不能正常运行的时候换成下边的代码却能运行正常,p和str都有值。
C/C++ code
    CString str;    char* p = str.GetBuffer(0);    char* pTemp;    blkTblRecPtr->getName(p);    strcpy(p, pTemp);    str.ReleaseBuffer();


请高手解惑

[解决办法]
上面的情况只是改变了指针p,但所指向的内容却没有copy到str中

你下面是不是写错了,应该是:
C/C++ code
    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处理字符串的一样操作


[解决办法]
探讨
换成一楼那样子是不错的。只是。不明白

读书人网 >C++

热点推荐