C++ 如何获得一个_bstr\t的长度
我正在使用以下方法将wstring复制到一个bstr\t:C++ 如何获得一个_bstr\t的长度,c++,windows,string,C++,Windows,String,我正在使用以下方法将wstring复制到一个bstr\t: _bstr_t name; SysFreeString(name); // Free previous string, if any. name = SysAllocString(Member[k].Membername); 现在,在我使用“name”之前,我想检查它是否包含至少5个字符。换句话说,我想检查它的长度 我没有找到“countof”或“len”之类的词。有人有主意吗 谢谢, 隆皮 这是什么站台?W
_bstr_t name;
SysFreeString(name); // Free previous string, if any.
name = SysAllocString(Member[k].Membername);
现在,在我使用“name”之前,我想检查它是否包含至少5个字符。换句话说,我想检查它的长度
我没有找到“countof”或“len”之类的词。有人有主意吗
谢谢,
隆皮
这是什么站台?Windows?您的代码包含一个主要错误:不要将
BSTR
调用(如SysFreeString
)与\u BSTR\t
混合使用<在C代码中,code>SysFreeString与BSTR
一起使用;在C++中,代码> > BSTRYTT < /CODE>将为您管理内存。特别是,\u bstr\u t::operator=
将为您调用旧字符串上的SysFreeString
,因此代码中的bug实际上包含了一个双重删除bug。类似地,\u bstr\u t::operator=
将调用新字符串的SysAllocString
,并复制您的输入,因此您的SysAllocString
会泄漏。也就是说,你的bug也是内存泄漏。刚刚注意到你的评论。。。因此,我应该跳过SysFreeString(name)并简单地分配name=Member[k].Membername,而不使用SysAllocString。?这是因为它为我做了所有这些事情。我理解你的意思了吗?谢谢你的评论!
name.length()