xymth 2021-06-26 19:29 采纳率: 0%
浏览 17

COleVariant转换为INT类型的方法?

如题,下面第1种方法就可以,后面的就不行。为啥?

   COleVariant var1,var2,var3,var4;
   int i;
   i =(int)V_R8(&var1); //可以,V_R8对应的是dblVal

   i =(int)V_I2(&var2); //不行,V_I2对应的是iVal

   i =(int)V_I4(&var3); //不行,V_I4对应的是lVal

   i = var4.lVal; //也不行

请教大伙。后面3种怎么就不行了呢?

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-03-16 11:05
    关注

    参考GPT和自己的思路:

    COleVariant是MFC中用于封装VARIANT数据结构的类,VARIANT数据结构可以存储不同类型的数据。V_R8、V_I2、V_I4等都是VARIANT数据结构中用于访问不同类型数据的宏定义,它们对应的字段分别是dblVal、iVal、lVal等。

    当COleVariant内部存储的数据类型为double时,使用V_R8宏定义可以将其转换为整型int类型;但当内部存储的数据类型为short或long时,使用V_I2或V_I4宏定义将无法正确转换,因为VARIANT数据结构内部存储的数值类型与目标类型不匹配。因此,需要根据数据类型选择正确的宏定义进行转换。而直接使用var4.lVal也不能保证正确转换,因为在不同平台和编译器下,VARIANT数据结构的存放方式和对齐方式也可能有所不同,正确的方法是使用对应的宏定义进行转换。

    评论

报告相同问题?

悬赏问题

  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题