gpt4 book ai didi

c - WinPE环境下C/C中的变体字符串转换

转载 作者:行者123 更新时间:2023-11-30 17:55:10 27 4
gpt4 key购买 nike

我有 C/C++ 代码问题,其中 WMI 查询检索 Win32_DiskDrive 的实例并获取其 Size 属性。该属性作为 Variant 类型检索,然后我必须将其转换为失败的 UINT64 类型。

如果我按原样打印变体 wchar 值,则打印正常。但如果我打印任何 UINT 形式,它就会给我一些乱码。这是在WinPE环境下,不确定是否会影响什么。

代码片段是:

VariantClear(&varPropVal);
hr = pInst->Get(L"Size", // property name
0L, // Reserved, must be zero.
&varPropVal, // property value returned.
NULL, // CIM type not needed.
NULL); // Flavor not needed.
if(hr == WBEM_S_NO_ERROR)
{
printf("Disk size: %S %llu %llu %u\n", V_BSTR(&varPropVal),
V_UI4(&varPropVal),
V_UI8(&varPropVal),
V_UINT(&varPropVal));
diskInfo->size = V_UI8(&varPropVal);
}

日志语句的输出: 磁盘大小:13440107520 4631112 4631112 4631112

此处打印为 wchar* 的第一个大小是正确的。

我在这里错过了什么吗?

最佳答案

在程序开始时设置语言环境(std::locale(""))可以解决问题。

关于c - WinPE环境下C/C中的变体字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14497832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com