繁体   English   中英

C ++从char *转换为unsigned char?

[英]C++ conversion from char * to unsigned char?

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

#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  );
};

我得到的错误说

从'char *'到'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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM