Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将LPBYTE转换为char*_C++_C - Fatal编程技术网

C++ 将LPBYTE转换为char*

C++ 将LPBYTE转换为char*,c++,c,C++,C,在谷歌“Convert LPBYTE to char*”上搜索了两个小时后,我只找到了与“RegQueryValueExW”相关的结果 除了“RegQueryValueExW”函数外,没有人使用“LPBYTE” 我的问题出现在unicode和ASCII转换中,如果我使用RegQueryValueEx,它将为我提供所有正确的ASCII值,但从多国观点来看,这对我没有帮助 现在, 我有以下代码 char* GetStringRegKey(HKEY hKey, LPCWSTR strValueName

在谷歌“Convert LPBYTE to char*”上搜索了两个小时后,我只找到了与“RegQueryValueExW”相关的结果

除了“RegQueryValueExW”函数外,没有人使用“LPBYTE”

我的问题出现在unicode和ASCII转换中,如果我使用RegQueryValueEx,它将为我提供所有正确的ASCII值,但从多国观点来看,这对我没有帮助

现在,

我有以下代码

char* GetStringRegKey(HKEY hKey, LPCWSTR strValueName, char* strValue, char* strDefaultValue)
{
    strValue = strDefaultValue;
    char szBuffer[512];
    DWORD dwBufferSize = sizeof(szBuffer);
    ULONG nError;
    LPCWSTR TempPassingString;
    char* hostName;
    nError = RegQueryValueExW(hKey, strValueName, 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
    if (ERROR_SUCCESS == nError)
    {
        strValue = szBuffer;
    }
    USES_CONVERSION;
    return strValue;
}
这将向我显示szBuffer数组,

这是正确的值。(注意“C”后的指针值)。 但当我将其分配给另一个字符数组strValue时,只有“C”显示为strValue的值

如下图所示

这可能是个愚蠢的问题,但我不明白我错在哪里。
请提供任何帮助、代码块或提示,将我的整个szBuffer转换为strValue。

您看到在调用中传递NULL的第四个参数了吗?这就是类型,我建议您花些时间研究它返回的值,以及您可以期望的结果数据的数据格式。然后,我将研究同一函数的狭义版本,
RegQueryValueExA()
。您当前的返回字符串可能是type
REG_SZ
,因为您使用的是API的宽字符版本,所以字符串是Unicode。@SantoshDhanawade我没有说这是不匹配的。我说您使用的是宽字符版本的
RegQueryValueEx
,它将为REG_SZ、REG_MULTI_SZ等类型的项目返回Unicode值。该函数始终需要一个LPBYTE参数,但为字符串类型返回的数据将是Unicode。如果您想要狭义表示,您必须使用RegQueryValueExA,或者在提取后使用
wideChartMultiByte()
转换为类似于CP\u UTF8的内容。@类似的内容,是的。关于如何在web上使用RegQueryValuex,这里有成千上万的例子。花点时间看看它是如何使用的,最重要的是,阅读文档。它真的可以回答你的任何问题。你真的应该试着理解
RegQueryValueExW()
RegQueryValueExA()
之间的区别,以及后缀
A
W
的函数之间的区别!在示例中显示的reg值是放置在
字节
数组中的reg值的
wchar\u t
表示,其中
字节
肯定与
字符
相同。
A
在ANSI中表示为值
65
,在UNICODE中表示为
65 0
。了解
char
wchar\u t
、ANSI、UNICODE、多字节、UTF8、UTF16、UTF32。。。那就回来吧!但是,这样你就不必再在这里询问了……;-)