将dword的void *表示转换为wstring

时间:2010-06-14 15:01:35

标签: c++ windows atl

我星期一愚蠢,所以我很抱歉发布这样一个类似新手的问题。

我正在使用CRegKey.QueryValue从注册表中返回dword值。 QueryValue将值写入void* pData,将长度写入ULONG* pnBytes

现在有一种方法可以通过stringstream将它从pData转换为wstring。我最接近的是将结果作为十六进制字符串。我正准备将十六进制表示转换为dword,然后从那里转换为一个wstring,当我认为这只是愚蠢并在这里问我而不是在这个问题上浪费我一生的时间。

2 个答案:

答案 0 :(得分:2)

为什么不使用CRegKey :: QueryDWORDValue? 然后你可以只用swprintf_s将它打印成一个字符串(如果你愿意的话)。

答案 1 :(得分:1)

我没有测试,但应该没问题:

/* To test if the value is REG_DWORD and get it */
DWORD dwValue;
switch (key->QueryDWORDValue(lpName, &dwValue)) {
    case ERROR_SUCCESS:
        cout << "All ok, value: " << dwValue;
        break;

    case ERROR_INVALID_DATA:
        cout << "Error, not DWORD value";
        break;

    default:
        cout << "Some other error";
        break;
}

/* to obtain the type */
DWORD dwType;
if (key->QueryValue(lpName, &dwType, NULL, NULL) == ERROR_SUCCESS)) /* use 'dwType' here... */