繁体   English   中英

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

[英]Initializing to a dynamically allocated const char array from a const char array

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

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

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

我有两个问题:

  1. 我怎样才能解决它——比如关闭它(我使用的是 Code::Blocks 16.01)?

  2. 我可以以其他方式初始化动态分配的 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];

您不能直接从另一个数组复制初始化数组,因此会出现错误。 您要么需要手动复制元素(或使用std::copy ),或者更好,如果您想要“复制”数组,请改用std::array<char, 4>

但是,正如评论中提到的,最好的可能是在此处使用std::string ,并使用其std::string::c_str()成员函数,以防您需要将const char*指针传递给旧的 C-像接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM