关于字符串与CCOMBSTR

今天在使用ccombstr的时候 需要做一个替换的功能,然后意外的是发现替换虽然执行了,结果却是无效的。

刚开始怀疑与cstring使用bstr指针构造来的有影响,但换成=号进行赋值构造,问题仍然存在;

然后把replace的参数中,从ccombstr构造来的参数均换成=号构造,并直接使用cstring类型参数之后结果正常:

CString sVal = bsVal;

CString sOld = m_bsReplace;

CString sNew = m_bsReplaceo;

int n = sVal.Replace( sOld, sNew);

经过此事,bstr中的长度前缀可能对结果造成了影响。

以后也将想慎重使用构造函数强制转换。

原文地址:https://www.cnblogs.com/ice-arrow/p/12727947.html