在编译时将const char *转换为char *

时间:2019-03-02 21:35:30

标签: c++ const constexpr compile-time

在我的项目中,我需要用户输入一个字符串,默认情况下键入的字符串为const char*(使用引号)。在我的项目中,我还需要修改这些字符串,因此我不能真正使用const

所以我考虑过使用以下功能将const char*转换为char*

不能100%地确定这是问题所在(因为它对我来说崩溃了),但是我相信问题是New字符串没有足够的内存来存储整个字符串。我尝试通过如下方式分配内存:

const char* szOldString = "Test";
char* szNewString[0x1024];
noconst(&szOldString, &szNewString, 5);

考虑我的参数和constexpr,这也不起作用。


我想知道是否有人知道我可以使用这些技巧来完成这项工作。我已经为此工作了一段时间,因此解决方案可能是显而易见的解决方案,但我只是看不到它。如果是这样的话,我的坏:D

1 个答案:

答案 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空间分配您想要复制字符串的位置。 之后,您可以根据需要对其进行修改。

让我知道这是否对您有所帮助。