我有一个Windows VARIANT
持有一个带有(据称)数字值的BSTR。
我想使用VariantChangeType
将此BSTR值转换为VT_I4或VT_I8或......
令我惊讶的是,传入一个字符串值"5.6"
,.
作为我的小数点分隔符,该函数成功进行整数转换,结果为lVal
或llVal
值为6
!我原本期望转换错误或值5
,这是sscanf
给我的。
-->
是否有VARIANT conversion functions使用的转换规则的文档? <--
我发现VariantChangeType
是通过(例如)VarI4FromStr
实现的,但零信息wrt。此函数使用的转换规则。
答案 0 :(得分:0)
似乎没有任何文件。此
从linked MSDN thread和一些调试,我可以得出结论:
VariantChangeType
会调用数据类型转换函数(如上所述)VarI4FromStr
似乎在内部致电VarR8FromStr
- 这解释了我们如何进行四舍五入VarR*FromStr
似乎致电VarParseNumFromStr
VarParseNumFromStr
不似乎进一步委托数字解析本身(我在VS2010中快速测试);它没有记录任何解析规则。