C/C++中_variant_t 型转为char * 的终极解决办法

因为我用ADO访问数据库时,取出的字段值为_variant_t 型的,在使用字段值的时候,需要对其进行类型转化。转换为int之类的就很简单了,转换为char *时,却花费了我不少时间。从网上找了半天,找到相关的方法,其中转载最多的一个就是:VariantToCString(VARIANT var)这个函数了,当然它是用来转换CString型的。但应用上之后,是转化过去了,同时程序会报错。也不知道到底是什么原因。
最后,我想到一个最终的解决办法,虽然没有找到根本的错误根源,但成功防止了错误“出现在你面前”。其实也很简单,只是用了try catch
_variant_t gprsID;
gprsID = "1234567890";//这里应为数据库处理函数返回的值,即_variant_t 型的值。
const char* gprsId;
try
{
      _bstr_t bst_t = gprsID;
      gprsId = (const char*)bst_t;    
}
catch(...)
{
      //printf("%s\r\n",gprsId);
      //上句的目的在于测试gprsId已经转化成功,但中间出了错误,注释掉后对你下面的程序没有影响,所以说是把错误给藏起来了,但类型转换成功了,目的已经达到。
}
//继续执行其它代码。

点评:其实不光在C++中,在其它语言里,如C#,也一定有同行应用过此类方式。我把这种方式称为“委曲求全”,呵呵!

转载于:https://www.cnblogs.com/tianyige/archive/2008/12/11/1352599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值