【发布时间】:2021-10-31 11:05:18
【问题描述】:
在我的项目中,我需要用户输入一个字符串,输入的字符串默认为const char*(带引号)。在我的项目中,我还需要修改这些字符串,所以我不能真正使用const。
所以我考虑将const char* 转换为char* 具有以下功能:
不是 100% 确定这是问题所在(因为它对我来说崩溃了),但我认为问题在于 New 字符串没有足够的内存来存储整个字符串。我试着通过这样写来分配它的内存:
const char* szOldString = "Test";
char* szNewString[0x1024];
noconst(&szOldString, &szNewString, 5);
考虑到我的参数和 constexpr,这也不起作用。
我想知道是否有人知道我可以使用什么很酷的技巧来完成这项工作。我已经为此工作了一段时间,所以解决方案可能是一个显而易见的解决方案,我只是看不到它。如果是这样,我的错:D
【问题讨论】:
-
您不能在编译时真正修改实际内存,即使您确实使用了足够大的实际缓冲区。您要解决的实际编译时问题是什么?
-
我想你的意思是
(*New)[i] = (*Old)[i]。不是*New[i] = *Old[i]。 -
“编译时解密”,表示加密后的内容会以明文形式出现在可执行文件中。
-
这在很多不同的层面都有很多错误,我只是不知道从哪里开始。
-
在你的函数中,你认为 *New[i] = *Old[i]" 有什么作用?试试 "(*New)[i] = (*Old)[i]"。在主要部分,你认为“New = 0x1024”是做什么的?也许是“New[0x1024]”?你认为“0x1024”是什么意思?不是1k。为什么调用 Size=4 的函数?您不想复制字符串结尾字符吗?当您甚至不了解哪些库函数已经可用于复制数据、指针是什么、*x[i] 语法意味着什么、内存分配是什么、“0x”表示法意味着什么时,为什么还要寻找“酷黑客” , 什么 ... ?关于这个问题的一切都只是wr
标签: c++ constants constexpr compile-time