c++ - 从 const char 数组初始化为动态分配的 const char 数组

标签 c++ arrays dynamic codeblocks

我正在尝试编写将 const char 数组分配给动态分配的 const char 数组的代码。
我试着这样做

const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new const char[4](staticArray);

但是我收到一个错误(“数组新 [-fpermissive] 中的带括号的初始化程序”)。

我有两个问题:
  • 我该如何解决它 - 比如将其关闭(我使用的是 Code::Blocks 16.01)?
  • 我可以以其他方式初始化动态分配的 const char 数组吗?
  • 最佳答案

    重载新运算符将完成您的工作。

    void * operator new[](size_t n, const char *s) {
        void *p = malloc(n);
        strcpy((char *)p, s);
        return p;
    }
    

    现在可以像这样调用 new 运算符:
    const char staticArray[4] = "abc";
    const char * ptrDynamicArray;
    ptrDynamicArray = new (staticArray) char[4];
    

    关于c++ - 从 const char 数组初始化为动态分配的 const char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41981658/

    相关文章:

    c - 为什么我不能将字符串保存在 char 数组中?

    jQuery 不响应简单的 .click() 命令——出了什么问题?

    dynamic - 直接执行的编译器设计

    放置 cin.get 后关闭 C++ 控制台

    c++ - 使用 long int 以避免溢出是一个好习惯吗?

    c++ - C++中使用Catch测试框架编译错误 "error: expected ' ;' at end of declaration list"

    javascript - 制作 3D 阵列的 2D 横截面切片

    c++ - 如何在另一个类中构造一个类? (简单代码)

    c - 指针到指针算术未按预期运行

    c# - 'as dynamic[]' 和 ToArray() 之间的区别