基本上,我正在尝试这样做:
char x[] = "hello";
char* y = new char[sizeof(x)](x); // won't work.
有没有办法干净利落地做到这一点?没有评论请勿使用原始数组或原始指针。
答案 0 :(得分:4)
只需写一个函数。
template<typename T, size_t N>
T* new_array(T const(&arr)[N])
{
T* p = new T[N];
std::copy(std::begin(arr), std::end(arr), p);
return p;
}
int main()
{
char x[] = "hello";
char* y = new_array(x);
}
答案 1 :(得分:2)
C路:
char* y = strdup(x);
free(y);