C++ C++;从字符*到无符号字符的转换?
您好,我正在尝试创建一个take-a程序路径并将其放入注册表文件中,但我一直有一个错误。代码如下:C++ C++;从字符*到无符号字符的转换?,c++,path,compiler-errors,registry,type-conversion,C++,Path,Compiler Errors,Registry,Type Conversion,您好,我正在尝试创建一个take-a程序路径并将其放入注册表文件中,但我一直有一个错误。代码如下: #include <iostream> #include <windows.h> #include <winuser.h> #include <tchar.h> #include <limits> using namespace std; void reg() { char buffer[MAX_PATH]; GetModul
#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 );
};
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
void reg(){
字符缓冲区[最大路径];
GetModuleFileName(NULL,buffer,sizeof(buffer));
常量无符号字符路径[MAX_Path]={buffer};
::HKEY Handle_Key=0;
::RegSetValueEx(句柄_键,“我的目录”,0,1,Path,sizeof Path);
};
我得到的错误是
从“char*”到“unsigned char”[-fpermissive]的转换无效
我花了几个小时寻找解决方案,但我找不到。我猜问题是这条线
const unsigned char Path[ MAX_PATH ] = {buffer};
这里的问题是,您试图使用字符指针创建单个字符的数组
您只将该变量用作RegSetValueEx
调用的临时变量,因此实际上并不需要它。而是直接用缓冲区调用该函数
另外,您不应该在这里使用sizeof
,因为这将把所有缓冲区都放在注册表中,而不仅仅是实际的字符串。使用strlen
比如:
::RegSetValueEx(句柄键,“我的目录”,0,1,
重新解释(缓冲区),
斯特伦(缓冲区);
static\u cast
?我收到的错误消息是,从类型“char[260]”到类型“unsigned char*”@johnchen902更新了我的答案以使用重新解释\u cast
。
::RegSetValueEx( Handle_Key, "My Directory", 0, 1,
reinterpret_cast<unsigned char*>(buffer),
strlen(buffer));