在我的项目中,我需要用户输入一个字符串,默认情况下键入的字符串为const char*
(使用引号)。在我的项目中,我还需要修改这些字符串,因此我不能真正使用const
。
所以我考虑过使用以下功能将const char*
转换为char*
:
不能100%地确定这是问题所在(因为它对我来说崩溃了),但是我相信问题是New
字符串没有足够的内存来存储整个字符串。我尝试通过如下方式分配内存:
const char* szOldString = "Test";
char* szNewString[0x1024];
noconst(&szOldString, &szNewString, 5);
考虑我的参数和constexpr,这也不起作用。
我想知道是否有人知道我可以使用这些技巧来完成这项工作。我已经为此工作了一段时间,因此解决方案可能是显而易见的解决方案,但我只是看不到它。如果是这样的话,我的坏:D
答案 0 :(得分:2)
更简单的方法是使用函数strncpy(比仅仅使用strcpy更安全)。
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
//char oldString[]= "Hello World!";
const char* oldString = "Hello World!";
char newString[40];
/* copy to sized buffer (overflow safe): */
strncpy ( newString, oldString, sizeof(newString) );
cout << newString;
return 0;
}
另一种方法是使用malloc空间分配您想要复制字符串的位置。 之后,您可以根据需要对其进行修改。
让我知道这是否对您有所帮助。