[英]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] 中的括号初始化器”)。
我有两个问题:
我怎样才能解决它——比如关闭它(我使用的是 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];
您不能直接从另一个数组复制初始化数组,因此会出现错误。 您要么需要手动复制元素(或使用std::copy
),或者更好,如果您想要“复制”数组,请改用std::array<char, 4>
。
但是,正如评论中提到的,最好的可能是在此处使用std::string
,并使用其std::string::c_str()
成员函数,以防您需要将const char*
指针传递给旧的 C-像接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.