描述:
rt
就是_varaint_t 中的内容和 char *字符串 比较!!!??
解决方案1:
_variant_t szchar="123456";
strcmp((char*)(_bstr_t)szchar,"123456");
_com_util::ConvertBSTRToString()
的确需要delete.
_variant_t fromVal;
char * tostr;
tostr= (LPTSTR)(_bstr_t)fromVal;
先把_varaint_t 转换成char*再进行比较
ChangeType函数。
变成char *后用strcmp
试试!
ConvertBSTRToStringSee Also
Compiler COM Global Functions
Requirements
Header: comutil.h.
Lib: comsupp.lib
Microsoft Specific
Converts a BSTR value to a char *.
char* __stdcall ConvertBSTRToString(
BSTR pSrc
);
Parameter
pSrc
A BSTR variable.
Example
// ConvertBSTRToString.cpp
#include <comutil.h>
#include <stdio.h>
#pragma comment(lib, "comsupp.lib")
int main()
{
BSTR bstrText = ::SysAllocString(L"Test");
wprintf(L"BSTR text: %s\n", bstrText);
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText);
printf("char * text: %s\n", lpszText2);
SysFreeString(bstrText);
delete[] lpszText2;
}
Output
BSTR text: Test
char * text: Test
END Microsoft Specific
Requirements
Header: comutil.h.
Lib: comsupp.lib
See Also
Compiler COM Global Functions
呵呵,虽然这样子跟你的要求不符,但是效率还是比较高的,因为没有CHAR* 和WCHAR*的转化过程,_variant_t里面存放的是UNICODE字符
解决方案7: _variant_t str=L"sfdjkl";
int i=wcscmp(L"sfdjkl",(WCHAR*)str.piVal);
没有的,不用删除!
解决方案9: 同意楼上
strcmp(char_abc,(LPTSTR)(_bstr_t)Variant_tmp);