您能否指定 CComVariant 使用/将使用哪个小数分隔符?
上下文:无论属性类型如何,MSMXML (IXMLDOMElementPtr.getAttribute) 总是返回用 VT_BSTR 初始化的 CComVariant。因此,我们经常将十进制值存储在带有“.”的 BSTR 中。作为小数分隔符。但是,当 Windows 配置为使用逗号“,”作为小数分隔符时,CComVariant 无法转换为双精度或浮点数。
例子:
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"))
但没有任何改变。