你好,我正在尝试创建一个程序路径并放入注册表文件中,但我一直出错。这是代码:
#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”[-fppermissive]的转换无效
我花了几个小时寻找解决方案,但我找不到。
我猜,问题在于这条线
const unsigned char Path[ MAX_PATH ] = {buffer};
这里的问题是,您试图使用字符指针创建单个字符数组。
您仅将该变量用作<code>RegSetValueEx</code>调用的临时变量,因此您并不真正需要它。相反,直接使用缓冲区
调用该函数。
此外,您不应该在这里使用< code>sizeof,因为这将把所有的缓冲区放在注册表中,而不仅仅是实际的字符串。使用< code>strlen。
喜欢:
::RegSetValueEx( Handle_Key, "My Directory", 0, 1,
reinterpret_cast<unsigned char*>(buffer),
strlen(buffer));
我在编译代码时遇到了问题。 我从http://www.cplusplus.com/reference/algorithm/all_of/?kw=all_of.拿了密码 我正在使用代码::块12.11,我有以下错误: C:\用户\PC-HP\桌面\chiffre\romain\main.cpp||在实例化的'boolall_of(InputIterator,InputIterator,UnaryPr
我在尝试编写一个Arduino程序来读取通过串行连接处理发送的命令时遇到了一个小问题。处理应该通过串行连接向Arduino发送“H”或“L”。这个值在我的程序中以字符的形式存储,但当我尝试进行串行操作时。写入(“值:%c,val)”时,出现“从'const char*'到'const uint8_t*'的无效转换”错误。如果有人能帮我解决这个问题,那就太好了。我真的需要弄清楚这个值是什么,这样我才
描述 (Description) C库函数char *strrchr(const char *str, int c)通过参数str指向的字符串中最后一次出现的字符c (unsigned char)。 声明 (Declaration) 以下是strrchr()函数的声明。 char *strrchr(const char *str, int c) 参数 (Parameters) str - 这是C
描述 (Description) C库函数char *strchr(const char *str, int c)搜索参数str指向的字符串中第一次出现的字符c (unsigned char)。 声明 (Declaration) 以下是strchr()函数的声明。 char *strchr(const char *str, int c) 参数 (Parameters) str - 这是要扫描的C
转码 Stylus可以字符转码。这可以让字符变成标识符,或是渲染成字面量。 例如: body padding 1 \+ 2 编译成: body { padding: 1 + 2; } 注意Stylus中/当作为属性使用的时候需要用括号括起来: body font 14px/1.4 font (14px/1.4) 生成: body { font: 14px/1.4; font
问题内容: 我试图将const char *传递给从Swift中的Swift字符串转换而来的旧C库。 这是我正在调用的C函数: 如何将Swift字符串转换为这种const char类型?当我像这样传递ipAddress时,它可以工作: 但是当我这样通过时dit不起作用 我在需要指定类型的函数中需要它: 我尝试使用AnyObject而不是String,但这也不起作用。 谢谢。 问题答案: 不知道为什