从 char * 到 unsigned char 的 C++ 转换?

标签 c++ path compiler-errors registry type-conversion

您好,我正在尝试创建一个采用程序路径并放入注册表文件中的程序,但我一直遇到错误。这是代码:

#include <iostream> 
#include <windows.h> 
#include <winuser.h> 
#include <tchar.h>
#include <limits>

using namespace std;

void reg() {
char buffer[MAX_PATH];

GetModuleFileName(NULL,buffer,sizeof(buffer));

const unsigned char Path[ MAX_PATH ] = {buffer};

::HKEY Handle_Key = 0;

::RegSetValueEx( Handle_Key, "My Directory", 0, 1, Path, sizeof Path  );
};

我得到的错误是

invalid conversion from 'char*' to 'unsigned char' [-fpermissive]

我花了几个小时寻找解决方案,但找不到。

最佳答案

问题,我猜是这条线

const unsigned char Path[ MAX_PATH ] = {buffer};

这里的问题是您尝试使用字符指针创建单个字符数组。

您仅将该变量用作 RegSetValueEx 调用的临时变量,因此您实际上并不需要它。而是直接使用 buffer 调用该函数。

此外,您不应在此处使用 sizeof,因为这会将缓冲区的 所有 放入注册表中,而不仅仅是实际的字符串。使用 strlen

喜欢:

::RegSetValueEx( Handle_Key, "My Directory", 0, 1,
                 reinterpret_cast<unsigned char*>(buffer),
                 strlen(buffer));

关于从 char * 到 unsigned char 的 C++ 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17784907/

相关文章:

c++ - 如何在C++中重新声明类对象?

c++ - 比较两个无序集合的相等性有多昂贵?

python - 在VsCode中编译python时的奇怪路径

python - 将音频文件保存到所需路径

python - 如何在Pyinstaller中包含Google API JSON凭证文件?

c++ - 理解继承的嵌套类模板的偏特化

c++ - 模板参数列表太少——模板方法的特化,g++

javascript - 如何在 JavaScript 中获取当前桌面路径? (Windows 7的)

c++ - 声明为 void 的变量或字段(函数)

c - 取消引用指向不完整类型的指针时出错