小数分隔符和CComVariant

时间:2013-08-09 10:51:19

标签: windows visual-c++ com variant

您可以指定CComVariant使用/使用哪个小数分隔符吗?

上下文:无论属性类型如何,MSMXML(IXMLDOMElementPtr.getAttribute)始终返回使用VT_BSTR初始化的CComVariant。因此,我们经常最终得到存储在带有'。'的BSTR中的十进制值。作为小数点分隔符。但是,当Windows配置了逗号','作为小数分隔符时,CComVariant无法转换为double或float。

示例:

CComVariant dummy = "1.2345";
dummy.ChangeType(VT_R8);
if(dummy.vt != VT_R8) {
    cout << "Failed to convert" << endl;
} 
else {
    cout << dummy.dblVal << endl;
}

当Windows的小数点分隔符为昏迷时,我们会陷入“无法转换”。我试图设置std::locale::global(std::locale("English_United States.1252")),但没有任何改变。

0 个答案:

没有答案