我正在尝试编写将const char数组分配给动态分配的const char数组的代码。 我试着像
那样做const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new const char[4](staticArray);
但我得到一个错误("数组new [-fpermissive]"中的括号初始值设定项。)。
我有两个问题:
我怎么能解决它 - 比如关闭它(我使用Code :: Blocks 16.01)?
我可以以其他方式初始化动态分配的const char数组吗?
答案 0 :(得分:1)
让新操作员超负荷将完成您的工作。
void * operator new[](size_t n, const char *s) {
void *p = malloc(n);
strcpy((char *)p, s);
return p;
}
现在可以像这样调用新的运算符:
const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new (staticArray) char[4];
答案 1 :(得分:0)
您无法直接从另一个数组复制初始化数组,因此会出错。您需要手动复制元素(或使用std::copy
),或者更好的是,如果您希望使用std::array<char, 4>
来复制&#34; -able数组。
但是,正如评论中所提到的,最好的可能是在这里使用std::string
,并使用其std::string::c_str()
成员函数,以防您需要传递const char*
指针类C接口。