关于_variant_t的一些总结
原创此类型适用于COM类型VARIANT数据封装便于与C/C++数据类型转换
在头文件中定义
关于施工任务
此类封装了各种基本类型构造和赋值函数,可以直接定义赋值:
_variant_t vstr = "5";
_variant_t vint = 5;
_variant_t vbl = true;
关于价值获取和转化
可以判断vt成员值,对应于其确切类型:
if(vint.vt ==VT_INT)
{
int n = v.intVal;
}
由于此类封装了基本类型转换函数,因此可以更方便:
int n = vint;
特别说明,在某些情况下,直接为字符串类型获取成员值可能会有问题
string str = (char*)vstr.bstrVal
最好使用_bstr_tl要协助转换:
_bstr_t bstr = (_bstr_t)vstr;
string str = (char*)bstr;
或者: string str = (char*)(_bstr_t)vstr;
此外,无论_variant_t 任何基本类型值都可以转换为_bstr_t,进一步转换为string。
同理,_variant_t 从字符串构造的数据也可以转换为其他基本类型,前提是它们可以转换,
例如上面vstr使用字符串”5“建设,那么可以直接转换为int值:
int n = vstr;
实际上,在内部确定类型不匹配时,转换工作已经完成,这相当于实现atoi()的逻辑。
当字符串内容无法转换为另一种类型时,a_com_error异常。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
上一篇:C#对Socket操作的封装 下一篇:Windows错误代码表