今天在使用ccombstr的时候 需要做一个替换的功能,然后意外的是发现替换虽然执行了,结果却是无效的。
刚开始怀疑与cstring使用bstr指针构造来的有影响,但换成=号进行赋值构造,问题仍然存在;
然后把replace的参数中,从ccombstr构造来的参数均换成=号构造,并直接使用cstring类型参数之后结果正常:
CString sVal = bsVal;
CString sOld = m_bsReplace;
CString sNew = m_bsReplaceo;
int n = sVal.Replace( sOld, sNew);
经过此事,bstr中的长度前缀可能对结果造成了影响。
以后也将想慎重使用构造函数强制转换。