您可以指定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"))
,但没有任何改变。