如何在新[]的值初始化中使用变量

时间:2014-12-16 12:27:56

标签: c++ variables c++11 new-operator initializer-list

所以当new char数组时,我可以初始化值:

const char* foo = new char[4]{'J', 'o', 'n', '\0'};

我想知道的是如何在initializer_list中使用变量:

const string initializer{"jon"};
const char* foo = new char[4]{initializer.c_str()}; // This doesn't work, can I make it work?

1 个答案:

答案 0 :(得分:2)

您可以使用变量,但是您不能使用字符串并期望编译器将其神奇地拆分。

const char* ip = initializer.c_str();
const char* foo = new char[4]{ip[0], ip[1], ip[2], ip[3]};

一旦你有一个可变长度,这根本不起作用。您只需分配然后使用string::copy在单独的步骤中填充数组。