佚名通过本文主要向大家介绍了
请问一个问题!_varaint_t的问题!等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问一个问题! _varaint_t 的问题!
描述:
解决方案1:
描述:
_variant_t va;
char * tembuf;
tembuf = (LPTSTR)(_bstr_t)va; // 问题1:这个 为什么tembuf中没有va的内容!
if (strcmp( ip, (LPTSTR)(_bstr_t)va) == 0)
{
MessageBox(NULL, "vaip", "vaip", MB_OK); // 可以进入
}
if (strcmp( ip, tembuf) == 0)
{
MessageBox(NULL, "vaip", "vaip", MB_OK); // 不能进入
}
问题2: 上面两个比较结果
为什么不一样??
解决方案1:
不要用这种用法:
char * tembuf;
tembuf =(LPTSTR)(_bstr_t)va;
因为你的这个_bstr_t变量是临时的,不能满足转换要求。
必须这样:
_bstr_t bstrTemp=va;
char *tempbuf=(char*)bstrTemp;
这样才可以。
tembuf = (LPTSTR)(_bstr_t)va.bstrval;
我一般是这样做的
注意LPTSTR中间的T,有了这个T就和你的UNICODE编译开关有关系了.
tembuf = (LPTSTR)(_bstr_t)va;如果va中包含的不可转换为字符串的数据,当然会不一样.